在C#中如何将将utf8的一段代码转化成中文。

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了在C#中如何将将utf8的一段代码转化成中文。相关的知识,希望对你有一定的参考价值。

代码如下:["aqi":35,"area":"\u73e0\u6d77","pm2_5":22,"pm2_5_24h":20,"position_name":"\u5409\u5927","primary_pollutant":"\u2014","quality":"\u4f18","station_code":"1367A","time_point":"2013-05-08T09:00:00Z","aqi":38,"area":"\u73e0\u6d77","pm2_5":29,"pm2_5_24h":26,"position_name":"\u524d\u5c71","primary_pollutant":"\u2014","quality":"\u4f18","station_code":"1368A","time_point":"2013-05-08T09:00:00Z","aqi":42,"area":"\u73e0\u6d77","pm2_5":27,"pm2_5_24h":25,"position_name":"\u5510\u5bb6","primary_pollutant":"\u2014","quality":"\u4f18","station_code":"1369A","time_point":"2013-05-08T09:00:00Z","aqi":42,"area":"\u73e0\u6d77","pm2_5":18,"pm2_5_24h":22,"position_name":"\u6597\u95e8","primary_pollutant":"\u2014","quality":"\u4f18","station_code":"1370A","time_point":"2013-05-08T09:00:00Z","aqi":39,"area":"\u73e0\u6d77","pm2_5":24,"pm2_5_24h":23,"position_name":null,"primary_pollutant":null,"quality":"\u4f18","station_code":null,"time_point":"2013-05-08T09:00:00Z"]

\\uxxxx表示一个字符,xxxx是16进制表示这个字符在字符集的编号,你只要把xxxx转换成十进制然后找到对应的字符就行了。

代码如下:

using System.Text.RegularExpressions;

private void button1_Click(object sender, EventArgs e)

string sourceStr = File.ReadAllText("d:\\\\1.txt");
Regex regex = new Regex(@"\\\\u(\\w4)");
string result = regex.Replace(sourceStr, delegate(Match m)

string hexStr = m.Groups[1].Value;
string charStr = ((char)int.Parse(hexStr, System.Globalization.NumberStyles.HexNumber)).ToString();
return charStr;
);
MessageBox.Show(result);
string test = "\\u73e0\\u6d77";//如果直接在字符串上赋值为十六进制的字符,程序在编译的时候会自己编译为对应的字符。
MessageBox.Show(test);//直接显示为“珠海”不需要转换。

追问

这是我通过获取API接口得到的信息,可以提取这些信息并把这些信息转化成我的网页上显示的内容吗?而不是要这种窗口弹出的形式

追答

你把它反序列话成一个对象列表就可以使用了,怎么解析json方法有很多种,我给你写个.NET自带的方法吧(需要.NET 3.5以上)。

其他解析json的方法:

http://www.cnblogs.com/txw1958/archive/2012/08/01/csharp-json.html

代码如下:

cs页

using System.Text.RegularExpressions;
using System.Web.Script.Serialization;

public partial class Test : System.Web.UI.Page

public List<APIInfo> InfoList;
protected void Page_Load(object sender, EventArgs e)

string sourceStr = File.ReadAllText(Server.MapPath("1.txt"));
Regex regex = new Regex(@"\\\\u(\\w4)");
string result = regex.Replace(sourceStr, delegate(Match m)

string hexStr = m.Groups[1].Value;
string charStr = ((char)int.Parse(hexStr, System.Globalization.NumberStyles.HexNumber)).ToString();
return charStr;
);
javascriptSerializer javaScriptSerializer = new JavaScriptSerializer();
InfoList = javaScriptSerializer.Deserialize<List<APIInfo>>(result);

public class APIInfo

public string aqi get; set;
public string area get; set;
public string pm2_5 get; set;
public string pm2_5_24h get; set;
public string position_name get; set;
public string primary_pollutant get; set;
public string quality get; set;
public string station_code get; set;
public string time_point get; set;

aspx 页

<%@ Page Language="C#" AutoEventWireup="true" CodeBehind="Test.aspx.cs" Inherits="MyWebProject.Test" %>
<%foreach (APIInfo item in InfoList)%>
<%=item.aqi %>
<%=item.area %>
<%=item.pm2_5 %>
<%=item.pm2_5_24h %><br />
<%=item.position_name %>
<%=item.primary_pollutant%>
<%=item.quality%>
<%=item.station_code%><br />
<%=item.time_point%>
<hr />
<%%>

参考技术A 这明显不是utf-8,就是unicode或者或utf-16,不要滥用专业术语
具体的转换参见
http://rritw.com/w3school/js/jsref_regexp_unicode_hex.html
http://www.cnblogs.com/ecalf/archive/2012/09/04/unicode.html
http://netwjx.github.io/blog/2012/07/07/encode-and-decode-unicode-escape-string/
参考技术B 这是JOSN 对象,不需要转化追问

恩,没错,是josn对象,这是我通过获取API接口得到的信息,可以把这些信息转化成我的网页上显示的内容吗?可以提取这些信息吗?

追答

肯定可以啊,你要显示那些东西,前台写JS 的时候提取出来就好

参考技术C //utf-8 转换 gb2312
//gb2312 是可以显示汉字的
private string UTF8ToGB2312(string str)

try

Encoding utf8 = Encoding.GetEncoding(65001);
Encoding gb2312 = Encoding.GetEncoding("gb2312");//Encoding.Default ,936
byte[] temp = utf8.GetBytes(str);//str是你的字符串
byte[] temp1 = Encoding.Convert(utf8, gb2312, temp);
string result = gb2312.GetString(temp1);
return result;

catch

return null;


你调用这个方法试试 UTF-8格式的字符串str最后返回GB2312的字符串result
参考技术D 这个不都是UTF8吧 我找工具了也转化不了啊

在C#中怎样将一个字符串ENCODE成UTF8的URL格式

返回byte[]类型。。

1、首先运行vs2015。

2、简单的新建一个c#的web工程。

3、右键我们的项目,选择nuget来管理程序包。

4、在nuget中找到Newtonsoft.Json  下载并安装。

5、在HomeController中我们先添加Newtonsoft.Json引用。

6、 ViewBag.strings = JsonConvert.SerializeObject(objects);我们将这个  ViewBag.strings  在view页面中实现。

7、JsonConvert.DeserializeObject 方式就是将一个json字符串转为json对象。

参考技术A Encoding gb2312 = Encoding.GetEncoding("gb2312");
Encoding utf8 = Encoding.UTF8;
//首先用utf-8进行解码
string key = HttpUtility.UrlDecode(oStr, utf8);
// 将已经解码的字符再次进行编码.
string encode = HttpUtility.UrlEncode(key, utf8).ToLower();本回答被提问者采纳
参考技术B 这是你传入的时间
HttpUtility.UrlEncode("", System.Text.Encoding.UTF8);
取的时间
HttpUtility.UrlDecode("")
至于你提说返回byte[]类型,你是要提取的时间转换成它还是什么的不清楚,如果要转换就这样:
这个没有现成的方法,得自己写一个,也不难
参考技术C 楼主您的问题我越看越糊涂,能否详细地补充下

以上是关于在C#中如何将将utf8的一段代码转化成中文。的主要内容,如果未能解决你的问题,请参考以下文章

用HTTPResponse接收的中文为乱码,如何将其转化成utf8编码格式的数据

C#如何将string转为char[]

c#怎么把byte转化成int

matlab中将灰度图转化为二值图后,有如何转化为灰度图

C#中如何将byte[]转化为字符串!!!

如何将下面的C语言转化成C#