Browse Subversion Repository
Diff of /trunk/teraterm/ttpcmn/ttcmn.c
Parent Directory
| Revision Log
| Patch
| 1582 |
return i; |
return i; |
| 1583 |
} |
} |
| 1584 |
|
|
|
// 内部コード(CodePage)をUTF-32(UTF-16LE)へ変換する |
|
|
static unsigned int SJIS2UTF32(WORD KCode, int CodePage) |
|
|
{ |
|
|
unsigned int c; |
|
|
|
|
|
// 内部コード(CodePage)からUTF-16LEへ変換する |
|
|
if (CodePage == 932) { |
|
|
c = CP932ToUTF32(KCode); |
|
|
} else { |
|
|
unsigned char buf[3]; |
|
|
wchar_t wchar; |
|
|
int ret; |
|
|
int len = 0; |
|
|
if (KCode < 0x100) { |
|
|
buf[0] = KCode & 0xff; |
|
|
len = 1; |
|
|
} else { |
|
|
buf[0] = KCode >> 8; |
|
|
buf[1] = KCode & 0xff; |
|
|
len = 2; |
|
|
} |
|
|
ret = MultiByteToWideChar(CodePage, MB_ERR_INVALID_CHARS, buf, len, &wchar, 1); |
|
|
if (ret <= 0) { |
|
|
c = 0; |
|
|
} else { |
|
|
c = (unsigned int)wchar; |
|
|
} |
|
|
} |
|
|
if (c <= 0) { |
|
|
// 変換失敗 |
|
|
c = 0xfffd; // U+FFFD: Replacement Character |
|
|
} |
|
|
|
|
|
return c; |
|
|
} |
|
|
|
|
| 1585 |
// 内部コード(CodePage)をUTF-8へ出力する |
// 内部コード(CodePage)をUTF-8へ出力する |
| 1586 |
static int OutputTextUTF8(WORD K, char *TempStr, PComVar cv) |
static int OutputTextUTF8(WORD K, char *TempStr, PComVar cv) |
| 1587 |
{ |
{ |
| 1589 |
unsigned int code; |
unsigned int code; |
| 1590 |
int outlen; |
int outlen; |
| 1591 |
|
|
| 1592 |
code = SJIS2UTF32(K, CodePage); |
code = MBCPToUTF32(K, CodePage); |
| 1593 |
|
if (code == 0) { |
| 1594 |
|
// 変換失敗 |
| 1595 |
|
code = 0xfffd; // U+FFFD: Replacement Character |
| 1596 |
|
} |
| 1597 |
outlen = UTF32ToUTF8(code, TempStr, 4); |
outlen = UTF32ToUTF8(code, TempStr, 4); |
| 1598 |
return outlen; |
return outlen; |
| 1599 |
} |
} |
|
|
Legend:
| Removed from v.7462 |
|
| changed lines |
| |
Added in v.7464 |
|
|
| |