您好,匿名用户
随意问技术百科期待您的加入

windows中有没有方法能设置ansi系列api的默认编码换成utf-8?

0 投票

我遇到的状况是这样:
我手上有一个别人做的2d绘图库, 可以理解为gdi的封装. 但是他只做了ansi版本, 比如TextOut这样的函数, 只能输入ansi字符串, 而不是utf-16le宽字符串. 我现在的上层应用可以选择utf-8或者utf-16le作为内部编码, 那么就面临一个问题, 就是当我要渲染字符串的时候, win32的ansi系列api接受的是"本地编码", 就是GetACP返回的CodePage. 如果我每次渲染之前都使用转换函数转换的话, 比如我用utf-8, 就会执行这样的过程----先把utf-8转换成utf-16le, 再把utf-16le转换成本地ansi编码比如GBK, 然后传递给TextOut, TextOut内部会自动把GBK再传换成utf-16le再显示. 来来回回绕了一大圈, 未免太复杂了.

我想请教的就是, 有没有方法把进程内的ansi系列api默认编码全部换成utf-8? 比如"SetACP"这样类似的方法. 这样我就可以在应用中使用utf-8传给TextOut, 由TextOut执行一次转换, 就可以显示了.

用户头像 提问 2012年 12月1日 @ Diana 上等兵 (326 威望)
分享到:

1个回答

0 投票

貌似只能在这个DLL外面再封装一层了。

用户头像 回复 2012年 12月1日 @ Nautilus 上等兵 (223 威望)
提一个问题:

相关问题

+1 投票
1 回复 44 阅读
0 投票
1 回复 23 阅读
用户头像 提问 2014年 1月27日 @ Ryze 上等兵 (293 威望)
0 投票
1 回复 91 阅读
0 投票
1 回复 37 阅读
用户头像 提问 2013年 10月25日 @ Trundle 上等兵 (301 威望)
0 投票
1 回复 43 阅读

欢迎来到随意问技术百科, 这是一个面向专业开发者的IT问答网站,提供途径助开发者查找IT技术方案,解决程序bug和网站运维难题等。
温馨提示:本网站禁止用户发布与IT技术无关的、粗浅的、毫无意义的或者违法国家法规的等不合理内容,谢谢支持。

欢迎访问随意问技术百科,为了给您提供更好的服务,请及时反馈您的意见。
...