libiconvで半角カナをcp932からutf-8に変換できないことがある

Sonoma-14.1.2です。

Mac付属のiconvを使ってcp932(いわゆるシフトJIS)の文字列をutf-8に変換しようとすると、一部変換に失敗します。


オ テ

投稿できないため全角にしましたが半角カタカナで、このようなファイルをUTF-8テキストでote.txtとして作成して、iconvでUTF-8 --> cp932 --> UTF-8としても

元に戻りません。

$ /usr/bin/iconv -f utf-8 -t cp932 ote.txt > ote-cp932.txt
$ /usr/bin/iconv -t cp932 -f utf-8 ote-cp932.txt > ote-after.txt
$ diff ote.txt ote.after
1c1
< オ テ
---
> オ C
$ 

(上記も半角カタカナなのですが、投稿できないため全角にしました)

変換対象文字列によっては、うまくいくこともありますが、半角カタカナがあるとうまくいかないことが多いようです。

homebrew のiconv だときちんと元に戻りますが、多くのソフトはMac標準のiconvを使っているため不便です。

Sonomaに変えてからこのようなことが発生するようになった気がします。


MacBook Air 13″, macOS 14.1

投稿日 2023/12/11 04:13

返信
返信: 3

2023/12/11 18:19 k1complete への返信

/usr/bin/iconv -l の結果に CP932 と UTF-8 があることを確認した上で

/usr/bin/iconv -l | egrep -i 'cp932|utf-8'


ファイルを作成し

echo $'\357\275\265 \357\276\203' > ote.txt


念為でファイルの内容を確認後に

cat ote.txt


以下を実行して

/usr/bin/iconv -f UTF-8 -t CP932 ote.txt > ote-cp932.txt
/usr/bin/iconv -f CP932 -t UTF-8 ote-cp932.txt > ote-after.txt


diff ote.txt ote-after.txt


期待どおりの結果が得られないならバグでしょうから、Apple にフィードバックしてはどうでしょうか。

製品フィードバック - Apple(日本)


ちなみに当方の環境 (Parallels Desktop 18 上の Ventura 13.6.1) では問題なさそうです。



このスレッドはシステム、またはAppleコミュニティチームによってロックされました。 問題解決の参考になる情報であれば、どの投稿にでも投票いただけます。またコミュニティで他の回答を検索することもできます。

libiconvで半角カナをcp932からutf-8に変換できないことがある

Apple サポートコミュニティへようこそ
Apple ユーザ同士でお使いの製品について助け合うフォーラムです。Apple Account を使ってご参加ください。