当向服务器发送请求,然后获得返回的JSON的时候,字符串的编码可能不是我们想要的。比如返回的如果是GB2132,在C#里可能会是乱码。这时候,我们需要转码,比如把GB2132转成UTF-8。

下面函数TransferStr用来完成转码,Test函数进行调用演示。

private void Test()
{Encoding strUtf8 = Encoding.UTF8;Encoding strGb2312 = Encoding.GetEncoding("GB2312");string str = "测试";// Suppose str is a GB2312 string str = TransferStr(str, strGb2312, strUtf8);Console.WriteLine(str);
}private string TransferStr(string str, Encoding originalEncode, Encoding targetEncode)
{try{byte[] unicodeBytes = originalEncode.GetBytes(str);byte[] asciiBytes = Encoding.Convert(originalEncode, targetEncode, unicodeBytes);char[] asciiChars = new char[targetEncode.GetCharCount(asciiBytes, 0, asciiBytes.Length)];targetEncode.GetChars(asciiBytes, 0, asciiBytes.Length, asciiChars, 0);string result = new string(asciiChars);return result;}catch{Console.WriteLine("There is an exception.");return "";}
}

最后输出不再是乱码。

另外,如果你的代码里用StreamReader来处理HttpWebResponse,最好使用这个版本的构造函数:

StreamReader(Stream stream, Encoding encoding);

使用例子如下:

//response's type is HttpWebResponse
StreamReader reader = new StreamReader(response.GetResponseStream(), Encoding.GetEncoding(response.CharacterSet));

这样,不管返回的是什么类型的编码,都能够根据自身的编码类型进行正确的转换了。

在C#中,如何将一种编码的字符串转换成另外一种编码。相关推荐

  1. 把数据库中有关枚举项值的数字字符串转换成文字字符串

    原文:把数据库中有关枚举项值的数字字符串转换成文字字符串 标题可能无法表达我的本意.比如,有这样一个枚举: public enum MyChoice { MyFirstChoice = 0, MySe ...

  2. angular 字符串转换成数字_3种方法搞定Excel中数字大小写转换? 123...变为壹贰叁......

    作者 | 雷哥 编辑 | 小西瓜 职场中,大家是否遇到这样的情况, 需要把数字"1,2,3......" 转换为 大写的"壹贰叁...",大家都有哪些方法可以实 ...

  3. 使用System.Convert.ToString将字符串转换成utf16进制编码

    我们在编写某些特殊的字符串处理程序的时候,需要获得字符的16进制编码,这个在vb中一般使用asc函数来进行,但是在c#中就没有那么简单.前一阵,为了将url中的汉字转换成utf编码的,我发现可以用Sy ...

  4. Python3小程序:把字符串转换成连续的UTF8编码(16位)

    # coding: utf-8 import binascii ''' 参考代码1 mystery = b"\xe5\x88\xab" x = mystery.decode('ut ...

  5. mysql把latin1编码的中文转成gbk(或utf8)编码

    很多项目在初建时由于工程师不严谨或者水平不够选用了错误的数据库编码,用latin1编码存储中文数据,随着项目复杂程度提高,会出现各种编码问题,可以说是后患无穷,经过反复测试,我总结出一个办法可以把la ...

  6. utf-8编码的字符串转成unicode(ucs-4)编码的字符串

    本人第一篇原创博客,尽力把代码注释清楚,如有错误之处,敬请指出 typedef unsigned int mfchar_t;// 无符号的4字节,用于容纳UCS-4的一个字符 typedef std: ...

  7. UTF-8编码的字符串拆分成单字、获取UTF-8字符串的字符个数的代码及原理(c++实现)...

    一.字符编码简单介绍 1. ASCII码 在计算机内部,全部的信息终于都表示为一个二进制的字符串.每个二进制位(bit)有0和1两种状态,因此八个二进制位就能够组合出256种状态,这被称为一个字节(b ...

  8. java二维码编码生成并转换成流传入前端页面

    java二维码编码生成并转换成流传入前端页面 这里主要用了com.google.zxing的依赖,这个依赖主要可以完成图片叠加.二维码生成和图片加文字等功能. ①添加依赖 <dependency ...

  9. js 字符串转换成数字的 三种方法

    在js读取文本框或者其它表单数据的时候获得的值是字符串类型的,例如两个文本框a和b,如果获得a的value值为11,b的value值为9 ,那么a.value要小于b.value,因为他们都是字符串形 ...

最新文章

  1. linux获取fifo中的数据数量,Linux select()和多个套接字的FIFO排序?
  2. arcgis中欧氏距离操作_ArcGIS空间统计工具—平均中心与中位数中心
  3. mysql示例employees数据库
  4. ORACLE报错(5)ORA-01102: cannot mount database in EXCLUSIVE mode
  5. android中的广播机制(动态注册)
  6. openmpi和blcr
  7. SPASVO推出ALM(覆盖全生命周期的研发过程管理平台)免费在线体验平台
  8. 12_通过上下文操作私有目录模式说明
  9. java下载https的网络图片,添加安全证书方式
  10. 2019多校 7.29
  11. 爱荷华州立大学计算机专业,爱荷华州立大学计算机博士专业课程设置情况
  12. 计算机窗口关闭不了怎么办,电脑上一直出现这个窗口关都关不掉怎么处理
  13. Centos搭建服务
  14. 合理运营在线教育社群
  15. 青岛科技大学计算机专硕拟录取分数,青岛科技大学2018年硕士研究生第一批拟录取名单公示...
  16. 中小学计算机课程标准及解读,小学信息技术课课程标准及解读
  17. D - Three Days Ago
  18. 集成学习(Ensemble Learning),Bagging、Boosting、Stacking
  19. pythonnet调用python tsne算法
  20. 计算机蓝屏无法启动代码50,电脑蓝屏代码0x0000002E/3F/44/50的原因与解决方法

热门文章

  1. 在centos上通过yum直接安装最新版gcc和开发工具
  2. LeetCode 657 : Robot Return to Origin
  3. java 下一代,什么是&QUOT;下一代插件&QUOT;对Java
  4. Centos7 上配置 java JDK1.8
  5. matlab7.0怎么用,matlab7.0中simulink使用
  6. mysql通过订单量排序_mysql8 参考手册--通过排序优化
  7. 【Netty】Netty解决粘包和拆包问题的四种方案
  8. Docker(九):Docker实战 安装 Ubuntu
  9. git 提交命令_Git和Github快速上手指南
  10. dataframe 按条件删行_根据列值删除Pandas中的DataFrame行