linux下字符编码问题?

youngwolf 2011-11-01 09:10:31
用iconv --list可以列出系统支持的所有编码格式,比如ANSI ASCII UTF-8什么的。
我的问题是,如下一段代码,其字符编码是什么:

const char pstr = "123中国456";

有没有什么api能知道其编码方式?

为什么为 std::cout << pstr;
打不出中文来。

而我在bash下面,用cat main.cpp(就是上面代码所在的cpp文件,这个cpp文件应该是utf-8编码的,我是用codeblocks创建并写代码的,我看其状态栏上显示个utf-8,所以估计是这样的),它却可以显示里面的代码,包括代码里面的中文?
...全文
157 8 打赏 收藏 转发到动态 举报
写回复
用AI写文章
8 条回复
切换为时间正序
请发表友善的回复…
发表回复
JoeBlackzqq 2011-11-03
  • 打赏
  • 举报
回复
[Quote=引用 5 楼 yang79tao 的回复:]
我的主要问题还是:

如下这段代码,里采用的是什么编码,与哪些东西有关?
const char pstr = "123中国456";

谢谢。
[/Quote]

你的文件是什么编码格式,这个字符串就是什么编码格式呀!
可以用strlen(pstr)看下结果,如果是UTF8格式的话,每个中文是占用3个Byte的,如果是其他普通编码(如中文),就是占2个Byte
youngwolf 2011-11-02
  • 打赏
  • 举报
回复
我的主要问题还是:

如下这段代码,里采用的是什么编码,与哪些东西有关?
const char pstr = "123中国456";

谢谢。
dydazt 2011-11-02
  • 打赏
  • 举报
回复
与你自己使用终端环境有关,谢谢
宇宙漫步者 2011-11-02
  • 打赏
  • 举报
回复
vi打开文件
之后:set fileencoding
会显示文件编码
delphiwcdj 2011-11-01
  • 打赏
  • 举报
回复
在.bashrc里设置字符集
freetstar 2011-11-01
  • 打赏
  • 举报
回复
[Quote=引用 2 楼 qq120848369 的回复:]

这个和终端编码有关系,楼主试着用sercureCRT远程登录上去,将secureCrt的编码改成Utf8。
[/Quote]
一个就是看你的程序代码默认使用的是什么代码保存的字符串,
还有就是终端默认的编码不一定是和程序代码是一致的
qq120848369 2011-11-01
  • 打赏
  • 举报
回复
这个和终端编码有关系,楼主试着用sercureCRT远程登录上去,将secureCrt的编码改成Utf8。
qiuxin315 2011-11-01
  • 打赏
  • 举报
回复
估计是iostream需要设置locale的问题
用locale::global
或者setlocale应该能解决,google下cout中文乱码或iostream中文乱码之类的

23,125

社区成员

发帖
与我相关
我的任务
社区描述
Linux/Unix社区 应用程序开发区
社区管理员
  • 应用程序开发区社区
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

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