关于c#的unicode转换问题

Breezexiang 2012-03-05 04:22:06
比如“京东商城”我如何把它变成 “\u4eac\u4e1c\u5546\u57ce”的格式啊

我目前用的办法是
byte[] b = System.Text.Encoding.Unicode.GetBytes(s);

string str = "";
for (int i = 0; i < b.Length; i = i + 2)
{
str += "\\u" + string.Format("%{0:X}", b[i + 1]) + string.Format("%{0:X}", b[i]);
}
str = str.Replace("%", "").ToLower();
return str;

但实际输出的是\\u 而不是期望的\u

求高手
...全文
669 24 打赏 收藏 转发到动态 举报
写回复
用AI写文章
24 条回复
切换为时间正序
请发表友善的回复…
发表回复
麟儿 2014-07-25
  • 打赏
  • 举报
回复
不知道楼主解决没 我也遇到同样的问题,解决了方便的话发我一份,623559340
caiyi000 2014-04-14
  • 打赏
  • 举报
回复
我也遇到这个问题
Breezexiang 2012-03-07
  • 打赏
  • 举报
回复
[Quote=引用 20 楼 abbey 的回复:]

.NET里的“京东商城”,其存储时就是Unicode编码下的一个个字节,内存里就是ac 4e 1c 4e 46 55 ce 57这样的一个字节串。

显示成“\u4eac\u4e1c\u5546\u57ce”或者按什么其他的可视化形式进行存储,这完全随便你。
[/Quote]
那我该怎么样让。net输出这种格式呢
老毕 2012-03-07
  • 打赏
  • 举报
回复
.NET里的“京东商城”,其存储时就是Unicode编码下的一个个字节,内存里就是ac 4e 1c 4e 46 55 ce 57这样的一个字节串。

显示成“\u4eac\u4e1c\u5546\u57ce”或者按什么其他的可视化形式进行存储,这完全随便你。
老毕 2012-03-07
  • 打赏
  • 举报
回复
[Quote=引用 18 楼 breezexiang 的回复:]
而且最奇怪的是,这个格式是。net也认的。
[/Quote]

.NET里的string默认已经Unicode的实现。Unicode字符串的显示样式和存储是两码事,你把这两件事混淆在一起了。
Breezexiang 2012-03-07
  • 打赏
  • 举报
回复
唉,可能我的表达有问题还是怎么。。。

我要做的是一个json格式的输出。之前别的人用php开发的,他们用jsonencode的方法可以把中文京东商城变成 \u4eac\u4e1c\u5546\u57ce

而且最奇怪的是,这个格式是。net也认的。你定义一个string s="\u4eac\u4e1c\u5546\u57ce";进入调试模式后,会发现已经变成了京东商城。

现在我就是要一个这样的转变。把中文变成\u形式的输出。但是并不是自己拼接一个\上去。因为这样会使输出的字符串变成\\u。这个不是期望中的unicode格式
Breezexiang 2012-03-07
  • 打赏
  • 举报
回复
啊!!!求救啊!!!
老毕 2012-03-05
  • 打赏
  • 举报
回复
可能有人不习惯LINQ表达式,其实上面第二行的表达式,等效于下面这样:
var source = "京东商城";
var result = string.Empty;

foreach (var c in source)
result += string.Format("{0}{1:x4}", @"\u", (int) c);
老毕 2012-03-05
  • 打赏
  • 举报
回复
示例代码:
var source = "京东商城";
var result = source.Aggregate(string.Empty,
(current, c) => current + string.Format("{0}{1:x4}", @"\u", (int) c));

Console.WriteLine(result);

运行结果:
\u4eac\u4e1c\u5546\u57ce
请按任意键继续. . .


反过来,从\u4eac\u4e1c\u5546\u57ce得到Unicode串更麻烦一些。
whowhen21 2012-03-05
  • 打赏
  • 举报
回复
你看结果了再说呀!
Breezexiang 2012-03-05
  • 打赏
  • 举报
回复
比如你在c#里
string s="\u4eac\u4e1c\u5546\u57ce";
你可以调试一下这个字符串,会发现。net已经自动将它转为了“京东商城”。。。
Breezexiang 2012-03-05
  • 打赏
  • 举报
回复
[Quote=引用 12 楼 whowhen21 的回复:]

看看这里,有一篇就是讲这个编码和解码的问题
Unicode编码解码
[/Quote]

我看了你博客,找到了你的文章,地址应该是这个

http://blog.csdn.net/whowhen21/article/details/4999204

但是你里面用的是/u,而我要的是\u

\u是标准,而你的/u是自定义的分隔符
whowhen21 2012-03-05
  • 打赏
  • 举报
回复
看看这里,有一篇就是讲这个编码和解码的问题
Unicode编码解码
Breezexiang 2012-03-05
  • 打赏
  • 举报
回复
用这个工具看json文件
http://jsonviewer.stack.hu/
你会发现,如果是\\u其实是错误数据

而如果是\u那么是可以自动转换成中文的
EnForGrass 2012-03-05
  • 打赏
  • 举报
回复
[Quote=引用 9 楼 breezexiang 的回复:]

引用 8 楼 chinajiyong 的回复:
用一下我写的

不行,也是\\U
我其实是在输出一个unicode的json格式字符串

现在客户端收到的是
{"errno":"0","data":{"resource_detail":{"id":"129","name":"\\u4eac\\u4e1c\\u5546\\u57ce","res_type":"1"}}}

而期……
[/Quote]
输出的就是\u4eac\u4e1c\u5546\u57ce,前面\那个是转义字符,如果改成你那样数据就破坏了,就恢复不了
Breezexiang 2012-03-05
  • 打赏
  • 举报
回复
[Quote=引用 8 楼 chinajiyong 的回复:]
用一下我写的
[/Quote]
不行,也是\\U
我其实是在输出一个unicode的json格式字符串

现在客户端收到的是
{"errno":"0","data":{"resource_detail":{"id":"129","name":"\\u4eac\\u4e1c\\u5546\\u57ce","res_type":"1"}}}

而期望收到的是

{"errno":"0","data":{"resource_detail":{"id":"129","name":"\u4eac\u4e1c\u5546\u57ce","res_type":"1"}}}
EnForGrass 2012-03-05
  • 打赏
  • 举报
回复
[Quote=引用 6 楼 breezexiang 的回复:]

但是实际客户端那边接收到的都是 \\u开头的,不能顺利被客户端解析
[/Quote]
用一下我写的
Breezexiang 2012-03-05
  • 打赏
  • 举报
回复
我是写一个接口,被客户端调用
现在客户端那边接收到的东西全是\\u,期望的是收到\u
Breezexiang 2012-03-05
  • 打赏
  • 举报
回复
但是实际客户端那边接收到的都是 \\u开头的,不能顺利被客户端解析
火星大能猫 2012-03-05
  • 打赏
  • 举报
回复
输出结果没有问题啊
\u4eac\u4e1c\u5546\u57ce
加载更多回复(4)

110,538

社区成员

发帖
与我相关
我的任务
社区描述
.NET技术 C#
社区管理员
  • C#
  • Web++
  • by_封爱
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告

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

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