CMemFile 和 Unicode

Posted

技术标签:

【中文标题】CMemFile 和 Unicode【英文标题】:CMemFile and Unicode 【发布时间】:2009-10-28 12:12:24 【问题描述】:

我是否认为 MFC 类 CMemFile 不能用于写入 unicode 数据,因为它使用定义为 unsigned char BYTE 的 BYTE*?

在CMemFile::Write中实际写入数据的行是

 Memcpy((BYTE*)m_lpBuffer + m_nPosition, (BYTE*)lpBuf, nCount);

如果可以,我可以在自己的 CMemfIle 实现中将 BYTE 替换为 wchar_t 以使其与 unicode 一起使用吗?

谢谢你 保罗..

【问题讨论】:

【参考方案1】:

不明白为什么不能直接使用。

唯一的问题是,当您进行内存复制时,您不能将 character 计数与 byte 计数互换。

【讨论】:

【参考方案2】:

文件是二进制的,所以总是读/写字节,并使用编码层转换成字符串,除非你确定数据是 ASCII 编码的。

不,您需要一个编码器/解码器。对于 Unicode,您需要一个 unicode 标头,后跟编码字符。编码字符的确切二进制值可能因 unicode 编码(UTF-7、UTF-8、UTF-16、UTF-32 等)而有所不同。

【讨论】:

你的意思是记录起始偏移量和字符串长度吗?

以上是关于CMemFile 和 Unicode的主要内容,如果未能解决你的问题,请参考以下文章

python字符串

Unicode

关于字符编码

python——字符编码

python——字符编码

python——字符编码