C#接收WebSphere MQ中文乱码问题
最近在用IBM的WebSphere MQ做数据传输,客户端操作系统Windows,服务器是AIX,我们用的都是UTF-8编码,但是联调时发现带中文的都出现了乱码。折腾了好久才发现问题,原来是CCSID的问题。虽然发送方客户端、接收方客户端和服务器的CCSID都是819,但是就是这个819惹的祸。819对应的编码是ISO-8859-1,支持大部分的西欧字符,但是却不支持中文。所以即使客户端用UTF-8进行数据发送,服务器还是会以CCSID对应的ISO-8859-1编码进行数据保存,所以从它里面取数据的时候用UTF-8编码取数据,取到的是以ISO-8859-1编码的数据。
解决方法:
以ISO-8859-1编码读服务器数据,然后再用UTF-8编码转换即可。
例如:
string dataXML= mqMessage.ReadString(mqMessage.Length);
byte[] byteArry=System.Text.Encoding.GetEncoding("ISO-8859-1").GetBytes(dataXML);
dataXML=System.Text.Encoding.UTF8.GetString(byteArry);//将字符串转换为UTF-8类型
再给个CCSID相关的文章:http://blog.chinaunix.net/uid-24946452-id-2158886.html