Unicode (UTF-16) 文字コードを Shift_JIS に変換する
バージョン 4.0.3 以降
SFXTextEncoding::UTF16BEToShiftJIS() 関数または
SFXTextEncoding::UTF16LEToShiftJIS() 関数を利用することができます。
SFXWideString utf16str(abc); // 変換したい UTF-16 文字列 SFXAnsiString shiftJISstr; SFXTextEncoding::UTF16LEToShiftJIS(utf16str, &shiftJISstr);
バージョン 4.0.3 以前
Unicode (UTF-16) 文字コードを Shift_JIS に変換するには、KDDI 拡張の
SFBKDDIUnicodeSJIS::Unicode16toSjis 関数を使用します。
SFXWideString utf16str(abc); // 変換したい UTF-16 文字列 SFXAnsiString shiftJISstr; SFBKDDIUnicodeSJISSmp jis = SFBKDDIUnicodeSJIS::NewInstance(); if (jis != null) { shiftJISstr.SetLength(utf16str.GetLengthCString() * 2); // Unicode16をShift-JISに変換する if (jis->Unicode16toSjis(&utf16str, &shiftJISstr)) { ACharPtr p1 = shiftJISstr.GetBuffer(); ACharPtr p2 = p1; SIntN i; for (i = 0; i < utf16str.GetLengthCString() * 2; ++i) { if (*p1 != '\0') { *p2 = *p1; ++p2; } ++p1; } *p2 = '\0'; shiftJISstr = shiftJISstr.Truncate(); // 末尾切り捨て // 変換成功 // 変換後の文字列は shiftJISstr に } }
参照 SFBKDDIUnicodeSJIS::NewInstance | SFBKDDIUnicodeSJIS::Unicode16toSjis |
SFXAnsiString::SetLength | SFXAnsiString::Truncate