Namazu-devel-ja(旧)


[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

Re: Why EUCJP?



On Sat, 21 Oct 2000 23:37:04 +0900
Satoru Takabayashi <satoru-t@xxxxxxxxxxxxxxxxxx> wrote:

> >kakasi/chasenモジュールを使う場合にsgmt_codeset()
> >は"EUCJP"を返しますけど、"EUC-JP"でなく"EUCJP"と
> >しているのは何か理由があるのでしょうか?
> 
> iconv(3) が "EUCJP" の方を好むから…、という理由だった気がし
> ますが、今、試したら glibc 2.1.2 の iconv(3) では "EUC-JP" 
> でも受け付けますね。

簡単なプログラムを書いてnl_langinfo(CODESET)の返り
値を見てみましたが、glibc 2.1.3なRed Hat Linux 6.2J
とLinux-Mandrake 7.1では日本語localeのときにどちら
も"EUC-JP"を返します。

#include <locale.h>
#include <langinfo.h>
#include <stdio.h>

int
main ()
{
  char *codeset;

  setlocale (LC_ALL ,"");
  codeset = nl_langinfo (CODESET);
  printf ("%s\n", codeset);
  return 0;
}


> 他の環境でも試しました:
> 
> OSF1 V4.0: (たぶん True 64 UNIX)
(snip)
> EUCJP, EUC-JP は駄目で eucJP は OK ですね。うむむ。

うむむ。codesetの変換に関してはsgmt_codeset()と
nl_langinfo(CODESET)の返り値を比較して、違う場合に
iconv()を通すというやり方が考えられますけど、比較
処理は単純にstrcmp()とかstrcasecmp()というわけには
いかないようですね。例えばcodeset.aliasとか作って、
それを見るようにするとかしないと。


  A A
= . . =
   V
end
Ryuji Abe