C++程序无法通过标准I/O流向控制台输出Unicode字符。

Jia****aha UID.2899495
2017-05-27 发表

build 16193开始出现的问题,这个版本依然没有解决。由于不知何种原因,没有办法使用反馈中心反馈这个问题,所以请帮忙反馈一下。

敬告:
为防止不可控的内容风险,本站已关闭新用户注册,新贴的发表及评论;
你现在看到的内容只是互联网用户曾经发表的言论快照,仅用于老用户留存纪念,且仅与科技行业相关,全部内容不代表本站观点及立场;
本站重新开放前已针对包括用户隐私、版权保护、信息安全、国家政策在内的各种互联网法律法规要求,执行了隐患内容的自查、屏蔽和删除;
本站目前所属个人主体,未有任何盈利安排与计划,且与原WFUN.COM所属公司不存在任何关联关系;
如果本帖内容或者相关资源侵犯到您的合法权益,或者您认为存在问题,那么请您务必点此举报或投诉!
全部回复:
wucd UID.573665
2017-05-27 使用 Lumia 1520 回复

不至于吧,代码贴出来看看。

Jia****aha UID.2899495
2017-05-27 回复

Quotewucd 发表于 2017-5-27 07:57
不至于吧,代码贴出来看看。


应该是新版控制台的问题,勾选使用传统控制台这个问题是可以解决的。 写了个简单的测试代码。 用C的printf()函数和C#的Console.WriteLine()函数输出都正常。 已经证实这个问题确实是系统的毛病。之前就出现这个问题,重置Visual Studio、重新安装都没管用…… 反正从创意者更新开始,控制台就开始变得非常奇怪……之前创意者更新用std::cout向控制台输出都是每个Unicode字符之间有一个空格,也是必须得勾选使用传统控制台。其实我很纠结,毕竟使用传统控制台的话,控制台会变得非常难看。
***图片停止解析***

wucd UID.573665
2017-05-27 回复

QuoteJianghaha 发表于 2017-5-27 12:40
应该是新版控制台的问题,勾选使用传统控制台这个问题是可以解决的。 写了个简单的测试代码。 用C的printf( ...


你工程都不是unicode吧?unicode字符串应写成:L"123测试"

wucd UID.573665
2017-05-27 回复

本帖最后由 wucd 于 2017-5-27 13:02 编辑

QuoteJianghaha 发表于 2017-5-27 12:40 应该是新版控制台的问题,勾选使用传统控制台这个问题是可以解决的。 写了个简单的测试代码。 用C的printf( ...
我用vc2010建了个win32控制台工程,输出汉字没问题。 代码: int _tmain(int argc, _TCHAR* argv[]) { std::cout << "123/测试/" << std::endl; return 0; } 输出: ***图片停止解析***

wucd UID.573665
2017-05-27 回复

我系统也是win10创意者更新。15063.296

Jia****aha UID.2899495
2017-05-27 回复

Quotewucd 发表于 2017-5-27 12:51
你工程都不是unicode吧?unicode字符串应写成:L“123测试“


在工程属性中默认使用的是Unicode字符集。之前是可以正常输出的。 现在cout<<和wcout<<L都不行。不知道为什么,现在只有使用setlocale( LC_ALL, "chs" )或者启用传统控制台才能正常输出。

Jia****aha UID.2899495
2017-05-27 回复

Quotewucd 发表于 2017-5-27 13:01
我用vc2010建了个win32控制台工程,输出汉字没问题。 代码: int _tmain(int argc, _TCHAR* argv[]) { std::co ...


我的是快速预览版,出现这个问题是上一个预览版的时候。创意者更新也会出现您图中的那个两个字符间会有一个空白的问题,需启用传统控制台才会正常输出。不知道是不是我的Windows 是英文版的原因。

本站使用Golang构建,点击此处申请开源鄂ICP备18029942号-4联系站长投诉/举报