パスワードを忘れた? アカウント作成
583130 journal

RKの日記: 今日のこぼれ話。

日記 by RK
CYGWINのnl_langinfoが正しい値を返すにはどうしたらよいんでしょうね。
まだ駄目?

$ cat langinfo_test.c
#include <langinfo.h>
#include <stdio.h>

int main(void) {

                printf("%s\n",nl_langinfo( CODESET));
                return 0;
}
$ cc langinfo_test.c
$ ./a.exe
US-ASCII

US-ASCII以外を返してこさせる方法が分からん。
Linuxだと、UTF-8とかちゃんと返してくるのだけど...

もうちょっと試してみた。
$ cat langinfo_test2.c
#include <langinfo.h>
#include <stdio.h>
#include <locale.h>

int main(void) {

                printf("%s\n",setlocale(LC_ALL, "C"));
                printf("%s\n",nl_langinfo(0));

                printf("%s\n",setlocale(LC_ALL, "POSIX"));
                printf("%s\n",nl_langinfo(0));

                printf("%s\n",setlocale(LC_ALL, "ja_JP.eucJP"));
                printf("%s\n",nl_langinfo(0));

                return 0;
}
$ cc langinfo_test2.c
$ ./a.exe
C
US-ASCII
(null)
US-ASCII
(null)
US-ASCII
...ないほうがましだ。こんなの:p

ちなみに、
$ cat langinfo_test3.c
#include <langinfo.h>
#include <stdio.h>
#include <X11/Xlocale.h>

#define X_LOCALE 1

int main(void) {
                struct lconv * lc;

                printf("%s\n",_Xsetlocale(LC_ALL, "C"));
                printf("%s\n",nl_langinfo(0));

                printf("%s\n",_Xsetlocale(LC_ALL, "POSIX"));
                printf("%s\n",nl_langinfo(0));

                printf("%s\n",_Xsetlocale(LC_ALL, "ja_JP.eucJP"));
                printf("%s\n",nl_langinfo(0));

                return 0;
}
$ cc langinfo_test3.c /usr/X11R6/bin/cygX11-6.dll
$ ./a.exe
C
US-ASCII
POSIX
US-ASCII
ja_JP.eucJP
US-ASCII
やっぱ、native locale機能はOFFにしちまったほうがよいのかしらん。
この議論は賞味期限が切れたので、アーカイブ化されています。 新たにコメントを付けることはできません。
typodupeerror

アレゲはアレゲを呼ぶ -- ある傍観者

読み込み中...