【问题标题】:Converting from ANSI to Unicode从 ANSI 转换为 Unicode
【发布时间】:2010-02-09 07:16:59
【问题描述】:

我正在使用 Visual Studio .NET 2003,我正在尝试将纯 ANSI 字符编写的程序转换为独立于 Unicode/多字节字符。

程序有一个pcap_loop的回调函数,叫做“got_packet”。它被定义为

void got_packet(u_char *user, const struct pcap_pkthdr *header, const u_char *cpacket)
{
   USES_CONVERSION;
   _TUCHAR *packet;
   packet = A2T(cpacket);
   ...
} 

但是,我收到错误消息

error C2440: 'type cast': cannot convert from 'const u_char *' to 'ATL::CA2WEX<>'

如何解决这个问题?

【问题讨论】:

  • ANSI 什么? ANSI 是一个标准机构,你的意思是 ASCII 吗?
  • 嗯,具体术语我不是太熟悉,但我的意思是ANSI字符串,在MSDN文章中提到:msdn.microsoft.com/en-us/library/87zae4a3(VS.71).aspx基本上,程序使用了char、char *、unsigned char和 unsigned char * 用于每个字符串/数组等,以及 strstr 和 strlen 等字符串函数,不关注 Unicode 字符。
  • @paxdiablo:“ANSI”也是 Windows-1252 字符集的别名。 alanwood.net/demos/ansi.html
  • 不!假设 ANSI=CP-1252 是错误的。请参阅microsoft.com/typography/unicode/cs.htm:“每个 ANSI 字符集的上 128 位不同”
  • ANSI 已成为任何 8 位代码页的通用术语。 “多字节字符集”是正确的术语。 ANSI 更容易从舌头上滚下来。

标签: c++ visual-c++ unicode multibyte


【解决方案1】:

我的猜测是 ATL 不知道 u_char 所以它不能选择正确的转换。试试这个:

packet = A2T((char *)cpacket);

有关详细信息,请参阅

【讨论】:

    猜你喜欢
    • 2015-04-20
    • 1970-01-01
    • 1970-01-01
    • 2017-11-29
    • 1970-01-01
    • 2011-06-03
    • 1970-01-01
    • 1970-01-01
    • 2012-05-06
    相关资源
    最近更新 更多