无法将 UTF-16 设置为语言环境
Unable to set UTF-16 as locale
我无法将 UTF-16 或其任何形式设置为 Linux 框上的语言环境。示例代码:
#include <iostream>
#include <string.h>
#include <locale.h>
using namespace std;
int main()
{
char *ret = std::setlocale(LC_ALL, "en_US.utf16");
if (ret) {
cout << ret << endl;
}
return 0;
}
输出不打印语言环境集,这意味着没有设置所需的语言环境。
包装盒上支持的语言环境列表不包括任何形式的 UTF-16 编码。我通过 locale -a
检查了这个
$ uname -a
Linux developer.com 2.6.32-279.1.1.el6.x86_64 #1 SMP Tue Jul 10 11:24:23 CDT 2012 x86_64 x86_64 x86_64 GNU/Linux
是否需要安装某些东西才能在盒子上使用 UTF-16?
您无法在 Linux 中将 UTF-16 设置为语言环境,因为 UTF-16 与 ASCII 不兼容。 C 字符串以 Null 终止,并且由于 UTF-16 可以包含嵌入的 nul
字符,因此无法正常工作。您需要坚持使用 UTF-8。
如果您想生成比系统当前更多的语言环境,请查看 /etc/locale.gen
,编辑此文件,然后 运行(作为 root)命令 locale-gen
以生成新插入的语言环境。但请注意:即使在这里您也无法生成 UTF-16!
我无法将 UTF-16 或其任何形式设置为 Linux 框上的语言环境。示例代码:
#include <iostream>
#include <string.h>
#include <locale.h>
using namespace std;
int main()
{
char *ret = std::setlocale(LC_ALL, "en_US.utf16");
if (ret) {
cout << ret << endl;
}
return 0;
}
输出不打印语言环境集,这意味着没有设置所需的语言环境。
包装盒上支持的语言环境列表不包括任何形式的 UTF-16 编码。我通过 locale -a
$ uname -a
Linux developer.com 2.6.32-279.1.1.el6.x86_64 #1 SMP Tue Jul 10 11:24:23 CDT 2012 x86_64 x86_64 x86_64 GNU/Linux
是否需要安装某些东西才能在盒子上使用 UTF-16?
您无法在 Linux 中将 UTF-16 设置为语言环境,因为 UTF-16 与 ASCII 不兼容。 C 字符串以 Null 终止,并且由于 UTF-16 可以包含嵌入的 nul
字符,因此无法正常工作。您需要坚持使用 UTF-8。
如果您想生成比系统当前更多的语言环境,请查看 /etc/locale.gen
,编辑此文件,然后 运行(作为 root)命令 locale-gen
以生成新插入的语言环境。但请注意:即使在这里您也无法生成 UTF-16!