有的时候在英文版本的操作系统中,dll实现文件里面使用USES_CONVERSION,将ascii的中文字符串转为unicode类型,写入注册表,会引起乱码,原因是:
使用atlconv.h中的A2T函数导致,字符串转换使用了当前线程的默认 ANSI 代码页执行,保存注册表后显示为乱码
解决的办法是:
在dll编译选项中添加上宏_CONVERSION_DONT_USE_THREAD_LOCALE ,即可以正常显示与读取
有的时候在英文版本的操作系统中,dll实现文件里面使用USES_CONVERSION,将ascii的中文字符串转为unicode类型,写入注册表,会引起乱码,原因是:
使用atlconv.h中的A2T函数导致,字符串转换使用了当前线程的默认 ANSI 代码页执行,保存注册表后显示为乱码
解决的办法是:
在dll编译选项中添加上宏_CONVERSION_DONT_USE_THREAD_LOCALE ,即可以正常显示与读取