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にしちまったほうがよいのかしらん。
まだ駄目?
$ 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にしちまったほうがよいのかしらん。
今日のこぼれ話。 More ログイン