【问题标题】:Cout char from different codepage than system usesCout char 来自与系统使用不同的代码页
【发布时间】:2017-09-22 12:20:46
【问题描述】:

我需要输出一个字符,但我的系统使用的代码页没有那个符号(即西班牙语感叹号“¡”)。 尝试

char excl = 173; 
cout.put(excl);

但它输入了另一个符号。

【问题讨论】:

  • 我想在 Windows 上?
  • @BaummitAugen 是的,它是 Windows 操作系统。例如,我有兴趣在 Visual Studio 中这样做。无需改变操作系统
  • 我想这应该是你正在寻找的。​​span>
  • 嗯,不太明显。我会把这个留给了解 Windows 的人。祝你好运。
  • 您的操作系统的语言设置是什么?

标签: c++ codepages


【解决方案1】:

如果操作系统的设置未配置为适当的代码页,您首先必须设置区域设置:

setlocale( LC_ALL, "esp" );

这会将您的语言环境设置为 Spanish_Spain.1252 (Windows-1252) 那么字符在值161以下

char excl = 161;
std::cout.put( excl );

std::setlocale

setlocale 函数将指定的系统语言环境或其部分安装为新的 C 语言环境。在下一次调用 setlocale 之前,修改仍然有效并影响所有区域设置敏感的 C 库函数的执行。

常量说明:

  • LC_ALL : 选择整个 C 语言环境
  • LC_COLLATE : 选择 C ​​语言环境的排序规则类别
  • LC_CTYPE : 选择 C ​​语言环境的字符分类类别
  • LC_MONETARY : 选择 C ​​语言环境的货币格式类别
  • LC_NUMERIC : 选择 C ​​语言环境的数字格式类别
  • LC_TIME : 选择 C ​​语言环境的时间格式化类别

【讨论】:

  • 好像切换到了1252,但是现在输出“?”而不是类似的符号。
  • 你在哪里看到“?”特点? (控制台应用程序,gui,...)。请解释你的项目。
  • 它在 Visual Studio 中
  • 我不明白“Visual Studio”对你意味着什么。
  • 我在 Visual Studio 的控制台中看到结果(如果我理解正确,也称为 VC++)
【解决方案2】:

最终奏效的是

SetConsoleCP(1252);
SetConsoleOutputCP(1252);

可能是因为我重新安装了VC++,安装时只选择了英文语言包。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2012-04-05
    • 1970-01-01
    • 1970-01-01
    • 2017-08-23
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2015-12-03
    相关资源
    最近更新 更多