急!·求C#中获得字的GB或者GBK编码的方法,在C#求UNICODE码很简单,在VC中求字的任何编码我都已经实现了,但在C#中由于默认是以UNICODE

gyjjcumt 2003-07-30 11:41:40
急!·求C#中获得字的GB或者GBK编码的方法,在C#求UNICODE码很简单,在VC中求字的任何编码我都已经实现了,但在C#中由于默认是以UNICODE编码,不知道如何在C#中求字的GB或GBK编码?谢谢!

[DllImport("kernel32",CharSet=CharSet.Unicode,EntryPoint="WideCharToMultiByte",SetLastError=true)]
public static extern int WideCharToMultiByte1(
uint CodePage, // code page
uint dwFlags, // performance and mapping flags
[MarshalAs(UnmanagedType.LPWStr)]
string lpWideCharStr, // wide-character string
int cchWideChar, // number of chars in string
[MarshalAs(UnmanagedType.LPStr)]
ref string lpMultiByteStr, // buffer for new string
//StringBuilder lpMultiByteStr, // buffer for new string
int cbMultiByte, // size of buffer
string lpDefaultChar, // default for unmappable chars
object lpUsedDefaultChar // set when default char used
);


********************************************调用**
szW="啊";
int sii=WideCharToMultiByte1(0x936,0, szW,6,out szM,4,dd, null);
...全文
27 4 打赏 收藏 举报
写回复
4 条回复
切换为时间正序
当前发帖距今超过3年,不再开放新的回复
发表回复
panyee 2003-07-30
  • 打赏
  • 举报
回复
可以啊

测试是可行的
gyjjcumt 2003-07-30
  • 打赏
  • 举报
回复
string sss = System.Text.Encoding.GetEncoding("GB18030").GetString(bytes);
这样也可以吗?
panyee 2003-07-30
  • 打赏
  • 举报
回复
string s = "测试";
byte[] bytes = System.Text.Encoding.Unicode.GetBytes(s);
Console.WriteLine("Unicode Code");
foreach(byte b in bytes)
{
Console.Write(string.Format("{0},", b));
}
Console.WriteLine();
Console.WriteLine("ASCII Code");
System.Text.Encoding srcEncoding = System.Text.Encoding.Unicode;
System.Text.Encoding dstEncoding = System.Text.Encoding.GetEncoding("GB2312");

bytes = System.Text.Encoding.Convert(srcEncoding,dstEncoding, bytes);

foreach(byte b in bytes)
{
Console.Write(string.Format("{0},", b));
}
Console.WriteLine();
string sss = System.Text.Encoding.GetEncoding("GB2312").GetString(bytes);
gyjjcumt 2003-07-30
  • 打赏
  • 举报
回复
非常感谢您,已经给你加分,谢谢!
相关推荐
发帖
C#

10.8w+

社区成员

.NET技术 C#
社区管理员
  • C#
  • Web++
  • by_封爱
加入社区
帖子事件
创建了帖子
2003-07-30 11:41
社区公告

让您成为最强悍的C#开发者