Channel J

電脳硬化症気味な日記です。まとまった情報は wiki にあります。

2010.2.19 (Friday)

at 15:30  

AIXでの文字コードの扱い   [ICTメモ]

 AIXのlocaleでハマった。

 AIX上のWebSphere Application Server 6.1iBatisを動作させたところ、マルチバイト文字を含むXMLファイルの読み取りに失敗した。
 XMLファイル自体は、「encoding="UTF-8"」と記述されたUTF-8のファイルであり、全く問題はない。

 結論としては、「AIXに『JA_JP』がインストールされていなかったこと」「AIXのdefault localeが『JA_JP』でなかったこと」が原因だった。

【ビックリその1】 "Ja_JP"と"JA_JP"って違うの?
 まず、IBMのサイトを見て驚く。

ja_JP → IBM-eucJP
JA_JP → UTF-8
Ja_JP → IBM-943

って、なんだその仕様は。 「Ja_JP.ujis」とかじゃないのかよ。。。と思って、「locale -a」してみると、「JA_JP」がインストールされている環境では「JA_JP.UTF-8」とかも登録されていることがわかる。

【ビックリその2】 どうして、OSのdefault localeが、JavaでのXMLファイル読み取りに影響するの?
 そもそも、XMLファイルに「encoding="UTF-8"」って書いてあるんだから、LC_ALL値がどうであれ、UTF-8で読んでほしいなぁ。あまつさえ、WAS実行ユーザのlocaleを「JA_JP」に変えてもダメだった。あくまで影響するのはAIXのdefault localeのようだ。なんでやねん。。。orz


« このコマンドを処理するのに必要な記…
作業用PC復旧 (その3) … »
  trackback:    



Go back.