Browse Subversion Repository
Diff of /trunk/teraterm/ttpcmn/ttcmn.c
Parent Directory
| Revision Log
| Patch
| 1582 |
return i; |
return i; |
| 1583 |
} |
} |
| 1584 |
|
|
| 1585 |
|
// 内部コード(CodePage)をUTF-32(UTF-16LE)へ変換する |
| 1586 |
|
static unsigned int SJIS2UTF32(WORD KCode, int CodePage) |
| 1587 |
|
{ |
| 1588 |
|
unsigned int c; |
| 1589 |
|
|
| 1590 |
|
// 内部コード(CodePage)からUTF-16LEへ変換する |
| 1591 |
|
if (CodePage == 932) { |
| 1592 |
|
c = CP932ToUTF32(KCode); |
| 1593 |
|
} else { |
| 1594 |
|
unsigned char buf[3]; |
| 1595 |
|
wchar_t wchar; |
| 1596 |
|
int ret; |
| 1597 |
|
int len = 0; |
| 1598 |
|
if (KCode < 0x100) { |
| 1599 |
|
buf[0] = KCode & 0xff; |
| 1600 |
|
len = 1; |
| 1601 |
|
} else { |
| 1602 |
|
buf[0] = KCode >> 8; |
| 1603 |
|
buf[1] = KCode & 0xff; |
| 1604 |
|
len = 2; |
| 1605 |
|
} |
| 1606 |
|
ret = MultiByteToWideChar(CodePage, MB_ERR_INVALID_CHARS, buf, len, &wchar, 1); |
| 1607 |
|
if (ret <= 0) { |
| 1608 |
|
c = 0; |
| 1609 |
|
} else { |
| 1610 |
|
c = (unsigned int)wchar; |
| 1611 |
|
} |
| 1612 |
|
} |
| 1613 |
|
if (c <= 0) { |
| 1614 |
|
// 変換失敗 |
| 1615 |
|
c = 0xfffd; // U+FFFD: Replacement Character |
| 1616 |
|
} |
| 1617 |
|
|
| 1618 |
|
return c; |
| 1619 |
|
} |
| 1620 |
|
|
| 1621 |
|
// 内部コード(CodePage)をUTF-8へ出力する |
| 1622 |
static int OutputTextUTF8(WORD K, char *TempStr, PComVar cv) |
static int OutputTextUTF8(WORD K, char *TempStr, PComVar cv) |
| 1623 |
{ |
{ |
| 1624 |
|
int CodePage = *cv->CodePage; |
| 1625 |
unsigned int code; |
unsigned int code; |
| 1626 |
int outlen; |
int outlen; |
|
int TempLen = 0; |
|
|
|
|
|
code = SJIS2UTF8(K, &outlen, *cv->CodePage); |
|
|
switch (outlen) { |
|
|
case 4: |
|
|
TempStr[TempLen++] = (code >> 24) & 0xff; |
|
|
case 3: |
|
|
TempStr[TempLen++] = (code >> 16) & 0xff; |
|
|
case 2: |
|
|
TempStr[TempLen++] = (code >> 8) & 0xff; |
|
|
case 1: |
|
|
TempStr[TempLen++] = code & 0xff; |
|
|
} |
|
| 1627 |
|
|
| 1628 |
return TempLen; |
code = SJIS2UTF32(K, CodePage); |
| 1629 |
|
outlen = UTF32ToUTF8(code, TempStr, 4); |
| 1630 |
|
return outlen; |
| 1631 |
} |
} |
| 1632 |
|
|
| 1633 |
// |
// |
|
|
Legend:
| Removed from v.7412 |
|
| changed lines |
| |
Added in v.7462 |
|
|
| |