编码问题

hanghangz 2008-11-21 12:17:05
且说某记事本里面有字符串
"\u63ed\u5bc6\u300a\u753b\u76ae\u300b\u4e66\u751f\u9648\u5764\u771f\u9762\u76ee\n\u624b\u6746\u9493\u9c7c200\u95ee"

用C#把這個记事本的字符串读到字符串变量string s中,只能看到
"\\u63ed\\u5bc6\\u300a\\u753b\\u76ae\\u300b\\u4e66\\u751f\\u9648\\u5764\\u771f\\u9762\\u76ee\\n\\u624b\\u6746\\u9493\\u9c7c200\\u95ee"

如果我是直接将字符串
"\u63ed\u5bc6\u300a\u753b\u76ae\u300b\u4e66\u751f\u9648\u5764\u771f\u9762\u76ee\n\u624b\u6746\u9493\u9c7c200\u95ee"
赋值給string s的话,s显示的是
"揭密《画皮》书生陈坤真面目
手杆钓鱼200问"

问题:要经过如何处理才能将记事本的中字符串读出来 也显示
"揭密《画皮》书生陈坤真面目
手杆钓鱼200问"
...全文
244 7 打赏 收藏 转发到动态 举报
写回复
用AI写文章
7 条回复
切换为时间正序
请发表友善的回复…
发表回复
长沙三毛 2008-11-21
  • 打赏
  • 举报
回复
读到FileStream、然后到字节中,最后用Encoding.Unicode.GetString()或Encoding.Defualt.GetString()看看
我姓区不姓区 2008-11-21
  • 打赏
  • 举报
回复

string str = "\\u63ed\\u5bc6\\u300a\\u753b\\u76ae\\u300b\\u4e66\\u751f\\u9648\\u5764\\u771f\\u9762\\u76ee\\n\\u624b\\u6746\\u9493\\u9c7c200\\u95ee";
Console.WriteLine(str);
foreach (Match match in Regex.Matches(str, "u(\\w{4})"))//用正则表达式匹配出所有双字节字符
{
int i = Convert.ToInt32(match.Groups[1].Value, 16);//转化为16进制整数
str = str.Replace(match.Groups[1].Value, ((char)i).ToString());//替换字符
}
str = str.Replace("\\u", string.Empty);
str = str.Replace("\\n", "\n");
Console.WriteLine(str);

三下鱼 2008-11-21
  • 打赏
  • 举报
回复
如:
记事本的读取为this.txt.text值
然后 string str1 = @this.txt.text;
然后 string str2 = str1;
str2 就是要的值“揭密《画皮》书生陈坤真面目 手杆钓鱼200问"”
不知可行否,楼主可以一式
三下鱼 2008-11-21
  • 打赏
  • 举报
回复
读取的时候是给一个字符串,并且该字符串前边加上转义字符@,让后在把这个字符串赋值给另外一个字符串(不加转义字符@)看看呢
hanghangz 2008-11-21
  • 打赏
  • 举报
回复
[Quote=引用 3 楼 ojlovecd 的回复:]
C# code
string str = "\\u63ed\\u5bc6\\u300a\\u753b\\u76ae\\u300b\\u4e66\\u751f\\u9648\\u5764\\u771f\\u9762\\u76ee\\n\\u624b\\u6746\\u9493\\u9c7c200\\u95ee";
Console.WriteLine(str);
foreach (Match match in Regex.Matches(str, "u(\\w{4})"))
{
int i = Convert.ToInt32(match.Groups[1].Value, 16);
str = str.Replace(ma…
[/Quote]

能不能用汉字描述一下代码功能?
我姓区不姓区 2008-11-21
  • 打赏
  • 举报
回复

string str = "\\u63ed\\u5bc6\\u300a\\u753b\\u76ae\\u300b\\u4e66\\u751f\\u9648\\u5764\\u771f\\u9762\\u76ee\\n\\u624b\\u6746\\u9493\\u9c7c200\\u95ee";
Console.WriteLine(str);
foreach (Match match in Regex.Matches(str, "u(\\w{4})"))
{
int i = Convert.ToInt32(match.Groups[1].Value, 16);
str = str.Replace(match.Groups[1].Value, ((char)i).ToString());
}
str = str.Replace("\\u", string.Empty);
str = str.Replace("\\n", "\n");
Console.WriteLine(str);

可以实现,但是感觉不用这么复杂的,应该有更好的方法
止戈而立 2008-11-21
  • 打赏
  • 举报
回复
转义问题。。
string s1="\u63ed";
string s2="\\u63ed";
这两个是被转义的字符是不同的

110,538

社区成员

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

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

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