如何输出utf-8格式的字符串

chenyunkai 2012-08-21 09:19:05
本人新手
最近刚搞编码问题。

比如我把一个含有7个汉字的文本文件以utf-8格式保存
如果我在dos下 设置utf-8代码页和正确字体后 用type 指令 是能够正确输出的

但是如果我在cpp中用一个string读取其中一行代码。去除文本bom后,在用cout输出到dos中 却是很多个框
utf-8中汉字占3字节,但是却输出了21个框,说明程序还是没办法以utf-8格式 输出这段字符串 还以为输入的不是7个汉字,是21个字符。

所以小弟想问,如果我的string保存了一段utf-8格式的字符串,如何正确输出到屏幕上,正确输出7个汉字,不是乱码呢?
...全文
1041 6 打赏 收藏 转发到动态 举报
写回复
用AI写文章
6 条回复
切换为时间正序
请发表友善的回复…
发表回复
chenyunkai 2012-08-21
  • 打赏
  • 举报
回复
[Quote=引用 5 楼 的回复:]
已经都设置过了,但还是不行。
转码都试过了,用type 的dos命令是可以正常输出utf-8文本的
但是无法正常输出字符串的文本,已经是utf-8的代码页了。
哎,实在不行就算了。
反正只是偶尔突发奇想。
十分感谢大家的帮助!
[/Quote]

但是无法正常输出字符串的文本,已经是utf-8的代码页了。
写错了
想说的是无法输出字符串,不是文本,
就算dos已经是utf-8的代码页,字符串还是不能正常输出。
chenyunkai 2012-08-21
  • 打赏
  • 举报
回复
已经都设置过了,但还是不行。
转码都试过了,用type 的dos命令是可以正常输出utf-8文本的
但是无法正常输出字符串的文本,已经是utf-8的代码页了。
哎,实在不行就算了。
反正只是偶尔突发奇想。
十分感谢大家的帮助!
Jim_King_2000 2012-08-21
  • 打赏
  • 举报
回复
在运行你的程序输出UTF-8之前,先用下面的命令切换代码页。
chcp 65001
Gloveing 2012-08-21
  • 打赏
  • 举报
回复
MultiByteToWideChar
WideCharToMultiByte
编码的转换
chenyunkai 2012-08-21
  • 打赏
  • 举报
回复
输出到dos中
比如我有一个string stemp中储存了7个汉字的utf-8编码
如果在dos中输出这7个汉字呢
cout<<stemp的话 只会输出21个框,而不是7个汉字
healer_kx 2012-08-21
  • 打赏
  • 举报
回复
输出到哪里?

而且一般Windows上,是要输出UNICODE16的。UTF8不行。

64,639

社区成员

发帖
与我相关
我的任务
社区描述
C++ 语言相关问题讨论,技术干货分享,前沿动态等
c++ 技术论坛(原bbs)
社区管理员
  • C++ 语言社区
  • encoderlee
  • paschen
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
  1. 请不要发布与C++技术无关的贴子
  2. 请不要发布与技术无关的招聘、广告的帖子
  3. 请尽可能的描述清楚你的问题,如果涉及到代码请尽可能的格式化一下

试试用AI创作助手写篇文章吧