SmallStyle


2005-01-25

_ スクリプトの文字化け問題

perlでとあるデータファイルをCSVに変換するスクリプトを作成していたのですが,ある文字列の部分だけどうしても結果がうまくとれない部分がありました.最初は対象の文字列の単なる転記ミスだたのですが,どうしてもうまくいかない部分がありました.よくよく見てみるとそれぞれの文字列に共通して存在する文字列はカタカナの「ソ」.

早速,Googleで検索してみると,簡単に解決できました.問題は文字コードにあります.

Shift-JISでスクリプトを作成した場合,漢字コード中にメタ文字である「\(0x5C)」が含まれることが原因. 文字化けする文字列一覧より引用

らしいです.この問題を引き起こす厄介な文字は何文字かあって,今回問題になった「ソ」も含めて40文字あります.この文字化けを回避する方法としては,

  • スクリプトをEUCなどの文字コードで保存する
  • シングルクォートで文字列列を囲む
  • 文字化けを起こす文字の後に「\」を付加する

とりあえず回避策として3番目の「\」をつけてみました.これで問題を回避できました.

参考:Perl Script Laboratory


about me

いろいろと興味を持ったことを書いてます.ちょっとしたことは hb(@smallstyle) on Twitter で書いてます.

Archive

2003|01|02|03|04|05|06|07|08|09|10|11|12|
2004|01|02|03|04|05|06|07|08|09|10|11|12|
2005|01|02|03|04|05|06|07|08|09|10|11|12|
2006|01|02|03|04|05|06|07|08|09|10|11|12|
2007|01|02|03|04|05|06|07|08|09|10|11|12|
2008|01|02|03|04|05|06|07|08|09|10|12|
2009|01|02|03|04|05|06|07|08|09|10|11|12|
2010|01|02|03|04|05|06|07|08|09|10|11|12|
2011|01|02|03|04|05|06|07|08|09|10|11|12|
2012|01|02|03|04|05|06|07|08|09|10|11|12|
2013|01|02|03|04|05|06|07|08|09|10|11|12|
2014|01|02|03|04|05|06|07|08|09|10|11|12|
2015|01|02|03|04|05|06|07|08|09|10|11|12|
2016|01|02|03|04|05|06|07|08|09|12|