鳥の巣箱

ネトゲしたり、機械いじったり、ソフト書いたり、山篭ったり、ギャンブルしたりする人

UTF-8からShift_JISへのエンコードエラー

なんかめんどくさいことにぶち当たったので覚書程度にまとめとく。

 

 

マイコン関係の開発環境として普段HEWとSublime Text 2を併用して使ってるんですが、HEWでUTF-8が使えないんですねぇー。

 

Sublime Text側で編集すると、HEWではコメントアウトした日本語部分が見事に文字化けします。

なんで、Sublime Textに「ConverttoUTF-8」を導入してはいるんですが、なぜか変換できずエラーを吐き出しやがったので「おや?」と思うわけですよ。

 

エラー内容はこんな具合。

Can not convert file encoding of Functions.c to Shift_JIS, it was saved as UTF-8 instead:

'shift_jis' codec can't encode character u'\uff5e' in position 354:

illega multibyte sequence

 

エラー内容を読んでみるに、Shift_JISエンコードできない文字が含まれてるということらしい。

「position:354」ってことは354番目の文字ということなんだろうが、実際に書いたソースコードを見ると354番目は「/(半角スラッシュ)」だった。

え、これが原因ってことはあり得んだろう。。。

 

positionからどの文字が駄々こねてるのかがわからんかったので「character u'\uff5e'」ここから手がかりをつかむことに。

unicodeでのこのコードがどの文字に当たるのか調べてみると「~(全角チルダ)」だった。

なんやて工藤。。。!!

 

これ、いろいろ調べてみるとなかなか面白かった。

Unicodeにおける波ダッシュ、全角チルダ問題でggrといろいろ出てくる。

これは厄介な仕様だなぁ。。。

 

ちなみにposition:354の謎がかなり消化不良だったので、試しにunicodeで書かれた文書をそのままShift_JIS形式で開いた時の354番目を調べてみたら全角チルダに当たった。

つまり文字化けした状態での354番目という意味だった。

わかんねぇよ!!!

 

 

 

というかHEWさんShift_JISやめませんか。。。マジで。