在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 />
<%%>
具体的转换参见
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的一段代码转化成中文。的主要内容,如果未能解决你的问题,请参考以下文章