加入收藏 | 设为首页 | 会员中心 | 我要投稿 李大同 (https://www.lidatong.com.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 综合聚焦 > 服务器 > Linux > 正文

linux – 无法将UTF-16设置为区域设置

发布时间:2020-12-14 01:05:45 所属栏目:Linux 来源:网络整理
导读:我无法在我的 Linux机器上将UTF-16或其任何形式设置为区域设置.这个示例代码: #include iostream#include string.h#include locale.husing namespace std;int main(){ char *ret = std::setlocale(LC_ALL,"en_US.utf16"); if (ret) { cout ret endl; } retu
我无法在我的 Linux机器上将UTF-16或其任何形式设置为区域设置.这个示例代码:

#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!

(编辑:李大同)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    推荐文章
      热点阅读