PHPソース中のヘブライ語

Windowsコンパイルする時に、ヘブライ語のとこで失敗するので調べてみた。
# 結論は iconv -f iso-8859-8 -t utf-8 で変換すれば良さそうだけど、環境によるのでエスケープするのが無難。

とりあえず、hexdump してみる。

Tishrei に相当する場所は以下の4バイト。

fa f9 f8 e9

によると Tishrei は
なのでコード表と比較してみる。

コード表から対応する文字を拾って左から並べてみた。

ヘブライ語は右から並べるので丁度逆方向に見ると一致してる。(装飾の違いはあるけど)

文字コードは、ISO-8859-8 でFA。

変換どうしよう

  • iconv で (-f iso-8859-8 -t utf-8)
d7 aa d7 a9  d7 a8 d7 99
    • そこから逆変換
char *JewishMonthHebName[14] =
{
        "",
        "iconv: 位置 13220 で不正な入力シーケンスがありました
  • emacs で (M-x set-buffer-file-coding-system => utf-8
c3 ba c3 b9  c3 b8 c3 a9
    • そこから hebrew-iso-8bit に逆変換
However, each of them encountered characters it couldn't encode:
  hebrew-iso-8bit-unix cannot encode these: u u o e c u a i e n ...

PHP の mb_convert_encoding で変換すると,

D7 AA D6 B4 D6 BC D7 A9 D6 B0 D7 81 D7 A8 D6 B5 D7 99
~~~~~             ~~~~~             ~~~~~       ~~~~~

emacs も iconv も逆変換ダメだけど、iconv の方がバイナリ的に似てる。

ヘブライ語の対応するページを開いたら、
http://he.wikipedia.org/wiki/%D7%AA%D7%A9%D7%A8%D7%99

iconv の出力結果で合ってた。逆変換がダメなのは気になるけど、とりあえず後にしよう。

気になる事

  • Linux ではそのままコンパイル出来るけど、ヘブライ語表示で問題はないんだろうか。日本だと UNIX 上の日本語は(UTF-8 でない場合) ISO-2022-JP でなく EUC 使うけど、それに似たコード体系って無いのかな。無いんだろうな。

続く > PHPソース中のヘブライ語(その2) - yoya's diary