
Linuxでgccを使ってプログラムを作っていますが、文字コード変換が一部分うまくいかなくて困ってます。
Shift-JISで作られたテキストファイルから一行ずつ文字を読み込んで、
それをUTF-8に変換して画面に出力しているんですが、
「神石高原町」だけ文字化けしているのか、表示されません。
前後の行は表示されるのでちょうど1行空白になる感じです。
とりあえず変換用に作った関数。
BOOL SJIStoUTF(
char* pin, // (IN) 変換元文字列
char* pout, // (OUT) 変換後文字列格納領域
size_t olen) // (IN) 変換後文字列格納領域サイズ
{
iconv_t cd;
size_t ilen, rlen;
cd = iconv_open( "UTF-8", "SJIS-WIN" );
ilen = strlen( pin );
rlen = iconv(cd, &pin, &ilen, &pout, &olen );
if( rlen == -1 ){
printf( "ERROR in S2U (%s)\n", pin );
return FALSE;
}
*pout = '\0';
iconv_close( cd );
return TRUE;
}
この関数に「神石高原町」を与えて返ってきた文字をファイルに出力して、
秀丸の文字コードUTF-8で開くと変換できなかった文字が「神」の前にあり、文字も「神石高原」になるし・・・。
Linuxのコンソール上でiconvのコマンド使ってファイルごと変換すれば
文字化けしないんですけど、
gccでiconv使うときは気をつけなきゃだめなことがあるんでしょうか?
なんでこうなるのかわかる方がいたら教えてください。
A 回答 (1件)
- 最新から表示
- 回答順に表示
No.1
- 回答日時:
>神石高原町
この文字列だけを変換する小さなプログラムを作って、それで試してみたらどうなりますか?
それから、
>この関数に「神石高原町」を与えて返ってきた文字をファイルに出力して、
> 秀丸の文字コードUTF-8で開くと変換できなかった文字が「神」の前にあり、文字も「神石高原」になるし・・・。
「文字列」じゃなくて「文字」が「神石高原」の「神」の前にあるんですか?
それとも、shift-jis だと「神石高原町」になるデータがそっくり
あるのでしょうか?
もう一つ。
> cd = iconv_open( "UTF-8", "SJIS-WIN" );
"SJIS-WIN"を "SJIS" に置き換えるとどうなりますか?
sakusaker7さん、回答、感謝です。
>神石高原町
>この文字列だけを変換する小さなプログラムを作って、それで試してみたらどうなりますか?
結果は同じでした。
>「文字列」じゃなくて「文字」が「神石高原」の「神」の前にあるんですか?
>それとも、shift-jis だと「神石高原町」になるデータがそっくりあるのでしょうか?
説明がまずかったですね。
秀丸で文字コードUTF-8で開くと変換できない文字がありますというメッセージが出て、
変換できない文字にジャンプができるのでジャンプしてみると「神」の前にジャンプするだけで、
実際に「神」の前にテキストエディタ上では文字は見えません。
で、バイナリエディタで開いたら「神」にあたる値(E7 A5 9E)の前に「A1」って値が入ってました。
変換した文字列の中にgccの制御コードになる値でも入ってるのかなぁ。
>"SJIS-WIN"を "SJIS" に置き換えるとどうなりますか?
これも結果は変わらずでした。
お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!
このQ&Aを見た人はこんなQ&Aも見ています
関連するカテゴリからQ&Aを探す
おすすめ情報
このQ&Aを見た人がよく見るQ&A
デイリーランキングこのカテゴリの人気デイリーQ&Aランキング
-
CString から LPCTSTRの型に変換
-
文字コードの%E3%80%とは何です...
-
strtol関数で文字列の有無を判...
-
Visual Studio プロパティペー...
-
日付の計算について
-
改行を含んだ文字列を正規表現...
-
Excel VBAでPDFファイルをMicro...
-
住宅にカナを入力する際に丁目...
-
CSVファイルの中で、「 , 」カ...
-
いまスマホからカードの申込み...
-
Accessで日付や数値を全角で表...
-
[VBA][Excel]クリップボードか...
-
VBA 文字に半角が含まれて...
-
IEからEdgeへの移行に伴うIMEの...
-
全角英数字の必要性が理解できない
-
エクセルにMicrosoft Barcode C...
-
エクセルでの”々”の扱い
-
エクセルの検索が正しくできな...
-
EXCELからCSVにすると余計なカ...
-
プログラミングでは、半角括弧...
マンスリーランキングこのカテゴリの人気マンスリーQ&Aランキング
-
Excel VBAでPDFファイルをMicro...
-
文字コードの%E3%80%とは何です...
-
CString から LPCTSTRの型に変換
-
SQLのデータで半角カナを全角に...
-
エクセルでの漢字(全角ひらが...
-
CString型からdouble型への変換
-
SJIS->UTF8->SJISコード変換に...
-
エンコードとコンバートの違い...
-
JISとシフトJIS
-
VBScript文字列をSJISからUTF8...
-
漢字からカタカナ変換マクロ
-
あるユニコード文字が、あるコ...
-
テキストをhtml変換するには
-
文字列を quoted-printable 文...
-
マイク取得音声のテキスト変換
-
16進数の文字列を文章に変える
-
dreamweaver タグの設定変更の...
-
日本語ドメインを取得しようと...
-
html内のカタカナを全て全...
-
ファイル名の右側を変更したい ...
おすすめ情報