
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で質問しましょう!
似たような質問が見つかりました
- Excel(エクセル) エクセルのVBAについて とあるサイトのコードを参考に、CSVの文字化けを直すVBAを作成しているの 7 2022/11/04 14:15
- Visual Basic(VBA) 特定の文字を簡単な操作で半角スペースに変換するか削除したい 2 2022/11/01 10:35
- Windows 8 メモ帳による文字コード変換 2 2022/09/01 18:38
- Visual Basic(VBA) ファイル名の右側を変更したい ファイル名:「1001日別売上」の左側へ「2022」を追加し、「202 6 2022/10/14 10:03
- UNIX・Linux テキストファイルをページ番号付きでコマンドラインから印刷したい 1 2023/02/22 12:47
- Excel(エクセル) Excelにて、フォルダ内のTextファイルをマクロで統合すると文字化けしてしまう時の解消コード 4 2023/01/01 07:32
- Visual Basic(VBA) 入力ボックスが繰り返しポップアップして止まらない。 下記コードでファイル名の変更をしたいのですが、変 1 2022/09/08 11:27
- Excel(エクセル) 文字化け。メモ帳でUTF-8に変換後、エクセルへ貼り付けたいです。 3 2022/08/14 07:21
- フリーソフト フォルダ、ファイル名の一括変換について 3 2023/03/16 09:23
- Visual Basic(VBA) 集めたシートのシート名を変更したい。 下記のコードでサブフォルダにあるファイルのSheet3を集めて 6 2022/08/23 10:38
このQ&Aを見た人はこんなQ&Aも見ています
関連するカテゴリからQ&Aを探す
おすすめ情報
このQ&Aを見た人がよく見るQ&A
デイリーランキングこのカテゴリの人気デイリーQ&Aランキング
-
Excel VBAでPDFファイルをMicro...
-
CString から LPCTSTRの型に変換
-
シングルクォーテーションの変換
-
文字コードの%E3%80%とは何です...
-
SQLのデータで半角カナを全角に...
-
エンコードとコンバートの違い...
-
python/変数の変換
-
漢字からカタカナ変換マクロ
-
URLが日本語なのになぜ表示...
-
JISとシフトJIS
-
CSVファイルの中で、「 , 」カ...
-
IEからEdgeへの移行に伴うIMEの...
-
エクセルで数値を全角文字(カ...
-
CSVの定義
-
Excelについて質問です。 セル...
-
COBOL・全角判定
-
VBA 文字に半角が含まれて...
-
住宅にカナを入力する際に丁目...
-
英数字のみ全角から半角に変換
-
VBA 置換文字がみつからない時
マンスリーランキングこのカテゴリの人気マンスリーQ&Aランキング
-
Excel VBAでPDFファイルをMicro...
-
CString から LPCTSTRの型に変換
-
文字コードの%E3%80%とは何です...
-
CString型からdouble型への変換
-
SQLのデータで半角カナを全角に...
-
ローマ字からカナに変換する方...
-
Delphiの型変換
-
VBScript 全角英数記号→半角英...
-
SJIS->UTF8->SJISコード変換に...
-
テキストをhtml変換するには
-
漢数字の変換
-
Encode.pmで「髙」(ハシゴ高)...
-
VBScript文字列をSJISからUTF8...
-
vbwide(半角⇒全角変換)について
-
文字列を quoted-printable 文...
-
エクセルでの漢字(全角ひらが...
-
oracle10g eucのblobをsjisのch...
-
漢字からカタカナ変換マクロ
-
VB6にも「ToString」ってあり...
-
goo blogでyou tube を埋め込む...
おすすめ情報