如何把UTF8编码转换成GB2312?

葫芦的世界 2006-11-27 04:30:04
web.config中的编码定义如下:
<globalization requestEncoding="utf-8" responseEncoding="utf-8"/>

现在我通过:String sms = SmsContent.Text.Trim();

得到的 sms 是UTF8编码.我想把他转换成 gb2312 的编码.不知道如何转换?

转换后通过URL传播出去.我已经找了一天了.试了很多种方法都不行.望高手赐教.解决马上给分.
...全文
607 13 打赏 收藏 转发到动态 举报
写回复
用AI写文章
13 条回复
切换为时间正序
请发表友善的回复…
发表回复
bbsRoson 2006-11-28
  • 打赏
  • 举报
回复
工具条门户网: www.ieshow.net 提供

UTF-8到acsii的转换(让自己的C++程序支持多语言)

我的思路是这样的:在配置文件(基本上使用XML格式)中采用UTF-8编码,这样世界上的任何文字就都可以显示了。但是如果直接将配置内容读出并显示,在你的C++程序里面肯定是乱码,那么怎么解决呢?步骤如下(直接看代码吧)

char szUTF8 [] = {0xE4,0XBB,0XB7,0XE5,0X80,0XBC};//是汉语的价值两个字

int nLen = MultiByteToWideChar( CP_UTF8, 0, szUTF8, -1, NULL, NULL );//得到UTF8编码的字符串长度,是2

LPWSTR lpwsz = new WCHAR[nLen];

MultiByteToWideChar( CP_UTF8, 0, szUTF8, -1, lpwsz, nLen );//转换的结果是UCS2格式的价值两个字


int nLen1 = WideCharToMultiByte( CP_ACP, 0, lpwsz, nLen, NULL, NULL, NULL, NULL );

LPSTR lpsz = new CHAR[nLen1];

WideCharToMultiByte( CP_ACP, 0, lpwsz, nLen, lpsz, nLen1, NULL, NULL );//转换完毕,得到了在我的机器上的"价值"两个字的二进制编码0xbc 0xdb 0xd6 0xb5

delete [] lpwsz; delete [] lpsz;
股神 2006-11-27
  • 打赏
  • 举报
回复
up
葫芦的世界 2006-11-27
  • 打赏
  • 举报
回复
我现在做的是短信平台方面的.其短信内容不能大于70个字节.所以这个 sms 还要不要进行一下判断.我看的技术文档是:一个字母和一个汉字都是一个字.这样我是不是可以直接截取?

sms.substring(0,70)

qiri07 2006-11-27
  • 打赏
  • 举报
回复
Public Shared Function UTF82GB(ByVal _s As String) As String
Dim byt8 As Byte() = System.Text.Encoding.UTF8.GetBytes(_s)
Dim bytg As Byte() = System.Text.Encoding.Convert(System.Text.Encoding.UTF8, System.Text.Encoding.GetEncoding("GB2312"), byt8)
Return System.Text.Encoding.GetEncoding("GB2312").GetString(bytg)
End Function
smoothwood 2006-11-27
  • 打赏
  • 举报
回复
通过uRL传出去可以这样处理

"http://www.***.com?s=" & HttpUtility.UrlEncode(yourstring, System.Text.Encoding.GetEncoding("GB2312")))
sunfei_major 2006-11-27
  • 打赏
  • 举报
回复
大体思路是这样.
将utf-8 转化成byte 把byte转换成gb3212

string str = "中国人123";
Encoding Client=Encoding.GetEncoding("gb2312");
byte[] bytes = Client.GetBytes(str);

Encoding ServerOK = Encoding.GetEncoding("gb2312");
string strServer = ServerOK.GetString(bytes);




葫芦的世界 2006-11-27
  • 打赏
  • 举报
回复
多谢楼上兄弟.马上测试.成功结帖!
葫芦的世界 2006-11-27
  • 打赏
  • 举报
回复
有没有不动整体配置,而只操作单页的方法

以下两种方法不可取:

一.在Page_Load里使用:Response.Encoding.....
二.
String sms = SmsContent.Text.Trim();
String gb2312info = string.Empty;
Encoding utf8 = Encoding.UTF8;
Encoding gb2312 = Encoding.GetEncoding("gb2312");
byte[] unicodeBytes = utf8.GetBytes(sms);
byte[] asciiBytes = Encoding.Convert(utf8, gb2312, unicodeBytes);
char[] asciiChars = new char[gb2312.GetCharCount(asciiBytes, 0, asciiBytes.Length)];
gb2312.GetChars(asciiBytes, 0, asciiBytes.Length, asciiChars, 0);
sms = new string(asciiChars);
underwater 2006-11-27
  • 打赏
  • 举报
回复
参考一下 System.Text.Encoding 对象, Encoding.Convert() 方法
cpp2017 2006-11-27
  • 打赏
  • 举报
回复
来晚了。
cityhunter172 2006-11-27
  • 打赏
  • 举报
回复
以下是我写的,由 UTF-7 转换成 UTF-8,
若是 gb2312 则是
System.Text.Encoding.GetEncoding("gb2312")
System.Text.Encoding.GetEncoding("gb2312").GetEncoder

System.Text.Encoding en8 = System.Text.UTF8Encoding.UTF8;
//首先要确保 this.TextBox1.Text 此时没有出现乱码,然后将其转成 char[]
char[] ch8 = en8.GetChars(en8.GetBytes(this.TextBox1.Text));

System.Text.Encoder ed7 = System.Text.UTF7Encoding.UTF7.GetEncoder();//获取 UTF7 的编码器
byte[] bt7 = new byte[ed7.GetByteCount(ch8,0,ch8.Length,true)];//初始化存放 UTF7 编码的 byte[]

ed7.GetBytes(ch8,0,ch8.Length,bt7,0,true);//从 char[] 得到 UTF7 编码的 byte[]
this.TextBox2.Text = System.Text.UTF7Encoding.UTF7.GetString(bt7);//由 byte[] 得到 UTF7 编码的字串

//最好把上述 UTF7 的字串,以通过存储过程进行 Insert Update 操作


//下列是从数据库中读取的 UTF7 转成 UTF-8,其实是一样的,你自己把它写成函数吧

System.Text.Encoding en7 = System.Text.UTF7Encoding.UTF7;
//首先要确保 this.TextBox1.Text 此时没有出现乱码,然后将其转成 char[]
char[] ch7 = en7.GetChars(en7.GetBytes(this.TextBox2.Text));

System.Text.Encoder ed8 = System.Text.UTF8Encoding.UTF8.GetEncoder();//获取 UTF8 的编码器
byte[] bt8 = new byte[ed8.GetByteCount(ch7,0,ch7.Length,true)];//初始化存放 UTF8 编码的 byte[]

ed8.GetBytes(ch7,0,ch7.Length,bt8,0,true);//从 char[] 得到 UTF8 编码的 byte[]
this.TextBox3.Text = System.Text.UTF8Encoding.UTF8.GetString(bt8);//由 byte[] 得到 UTF8 编码的字串
伴老思源 2006-11-27
  • 打赏
  • 举报
回复
结构如下:
<?xml version="1.0" encoding="GB2312" ?>
<configuration>
<system.web>
<globalization requestEncoding="GB2312" responseEncoding="GB2312" />
</system.web>
</configuration>
伴老思源 2006-11-27
  • 打赏
  • 举报
回复
webconfig:

<?xml version="1.0" encoding="GB2312" ?>
然后
<globalization requestEncoding="GB2312" responseEncoding="GB2312" />

62,025

社区成员

发帖
与我相关
我的任务
社区描述
.NET技术交流专区
javascript云原生 企业社区
社区管理员
  • ASP.NET
  • .Net开发者社区
  • R小R
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告

.NET 社区是一个围绕开源 .NET 的开放、热情、创新、包容的技术社区。社区致力于为广大 .NET 爱好者提供一个良好的知识共享、协同互助的 .NET 技术交流环境。我们尊重不同意见,支持健康理性的辩论和互动,反对歧视和攻击。

希望和大家一起共同营造一个活跃、友好的社区氛围。

试试用AI创作助手写篇文章吧