widestring转换问题(50分)

  • 主题发起人 主题发起人 DreamTiger
  • 开始时间 开始时间
D

DreamTiger

Unregistered / Unconfirmed
GUEST, unregistred user!
用string可以把widestring强制转换为string,这个转换过程是否跟
系统有关?比如我在GB系统中,对widestring“一个人”进行转换,
得到的是简体的“一个人”,那么,在big5系统中,对widestring
“一个人”用string进行强制转换,是否是得到big5码的“一个人”?
 
应该是吧,我猜的。
 
应该与所用的内码无关。
 
strng类型是按单字节处理数据,而widestring是按着双字节处理数据,
string到widestring的转换只是强制系统使其,必须按单字节处理,
所以与系统无关,给予其系统本身的存储结构无关.
问题的关键是你的widestring是不是在big5系统中是'一个人',
如果是就不存在这种问题,但如果你想将在GB码中的'一个人',
试图通过这种简单的强制类型转换来实现其到big5的转换是不可能的.
 
>strng类型是按单字节处理数据,而widestring是按着双字节处理数据,
>string到widestring的转换只是强制系统使其,必须按单字节处理,
>所以与系统无关,给予其系统本身的存储结构无关.
应该不是这样的吧。WideString是按照unicode编码的,GB是按照GB2312编码的,
Big5是按照Big5编码的,从String到WideString是肯定要进行转码的,它调用
的是MultiByteToWideChar。
从WideString到String也是必须经过转码的,调用的是WideCharToMultiByte。

>问题的关键是你的widestring是不是在big5系统中是'一个人',
>如果是就不存在这种问题,但如果你想将在GB码中的'一个人',
>试图通过这种简单的强制类型转换来实现其到big5的转换是不可能的.
在Unicode中‘一个人’只有一种表示方法。
 
其实一试就知道!
比较赞同 DreamTiger!
 
多人接受答案了。
 
后退
顶部