如何正确显示日文字符集编码的文本?

yjwx0017 2011-08-31 07:21:45
一个软件源码中的日文注释显示乱码,记事本打开也是乱码。
由此想到如果自己编写一个程序读取此文本,怎样才能正确显示呢?

网上查的一些都是设置控制面板语言选项,这不是我想要的答案,浏览器也没去设置控制面板但是却可以根据不同的编码方式显示正确文本,浏览器是如何实现的。

有没有有关设置字符集的api。
谢谢
...全文
4367 5 打赏 收藏 转发到动态 举报
写回复
用AI写文章
5 条回复
切换为时间正序
请发表友善的回复…
发表回复
yjwx0017 2011-08-31
  • 打赏
  • 举报
回复
谢谢---------------
苍蝇①号 2011-08-31
  • 打赏
  • 举报
回复
unicode才是王道,
辰岡墨竹 2011-08-31
  • 打赏
  • 举报
回复
日文用的是Shift-JIS编码。
对于Win7,可以用新的ELS(Extended Linguistic Services),可以很容易进行文本编码识别,下面这个带源代码例子。
http://msdn.microsoft.com/en-us/goglobal/dd156834
对于较早的版本,可以用IE的MLang组件中的IMultiLang2接口。它提供DetectInputCodepage和DetectCodepageInIStream函数,可以用来检测字符串和流的编码。
http://msdn.microsoft.com/en-us/library/aa741001(v=VS.85).aspx
检测编码后,可以直接用NLS(National Language Support)来设置线程的Locale,这样就可以让控件能正确显示对应的编码。
http://msdn.microsoft.com/en-us/goglobal/dd565826
http://msdn.microsoft.com/en-us/library/dd319078(v=vs.85).aspx
当然也可以自己用MultiByteToWideChar直接将Shift-JIS转换为Unicode。不建议转换为GBK。因为GBK没有包含全部的日文汉字,日语中很多自造汉字和异体字,这个用Unicode配合对应的日文字体才能将其正确的显示。Unicode在建立中日韩CJK时将一些相近的汉字字形(比如草字头、宝干头等不同地区写法是不同的)进行了归并,只有用日文字体(比如 MS明朝 即 MS Mincho)才能正确显示。
jackyjkchen 2011-08-31
  • 打赏
  • 举报
回复
在中文内码的条件下,有三种方式

1.转成unicode编码

2.转成GBK编码,GBK编码同样有日文字符集,只是某些和制汉字会显示成中国风格的

3.该系统字符集代码页,比较简单的方式失去M$下载个Microsoft Applocale软件能改变某个软件的内码而不影响系统
qq120848369 2011-08-31
  • 打赏
  • 举报
回复
UNICODE编码是万能的,它驾驭了一切字符。

存储的时候可能是UTF-8格式的,选择好UTF-8解析方式,自然而然系统就会把UTF-8转回UNICODE编码,然后去系统里一查表就把正确的字符打印给你了。

64,687

社区成员

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

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