Develop and Download Open Source Software

Browse Subversion Repository

Diff of /trunk/teraterm/ttpcmn/ttcmn.c

Parent Directory Parent Directory | Revision Log Revision Log | View Patch Patch

revision 7462 by zmatsuo, Sat Mar 9 17:32:42 2019 UTC revision 7464 by zmatsuo, Sat Mar 9 17:33:06 2019 UTC
# Line 1582  int WINAPI CommBinaryBuffOut(PComVar cv, Line 1582  int WINAPI CommBinaryBuffOut(PComVar cv,
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  {  {
# Line 1625  static int OutputTextUTF8(WORD K, char * Line 1589  static int OutputTextUTF8(WORD K, char *
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

Back to OSDN">Back to OSDN
ViewVC Help
Powered by ViewVC 1.1.26