http://www.sufeinet.com/plugin.php?id=keke_group

苏飞论坛

 找回密码
 马上注册

QQ登录

只需一步,快速开始

分布式系统框架(V2.0) 轻松承载百亿数据,千万流量!讨论专区 - 源码下载 - 官方教程

HttpHelper爬虫框架(V2.7-含.netcore) HttpHelper官方出品,爬虫框架讨论区 - 源码下载 - 在线测试和代码生成

HttpHelper爬虫类(V2.0) 开源的爬虫类,支持多种模式和属性 源码 - 代码生成器 - 讨论区 - 教程- 例子

查看: 36583|回复: 29

[C#语言基础] C#中文和UNICODE字符转换方法

[复制链接]
发表于 2012-11-24 18:30:46 | 显示全部楼层 |阅读模式
                                C#中文和UNICODE字符转换方法

在线直接转换工具    http://tool.sufeinet.com/Code/ChineseUnicode.aspx

这个方式其实很多见,特别是使用Json的时候用的比较多,
其实也很简单主要是使用了ToString("x")方法
直接看代码吧
[C#] 纯文本查看 复制代码
string str = "大家好我是苏飞";
            string outStr = "";
            if (!string.IsNullOrEmpty(str))
            {               
                for (int i = 0; i < str.Length; i++)
                {
                    //将中文字符转为10进制整数,然后转为16进制unicode字符
                    outStr += "\\u" + ((int)str).ToString("x");
                }
            }

下面方法是怎么样把UNICODE数据转成中文
就比如说像下面这样的数据吧
\u8c01\u80fd\u591f\u7ed9\u6211\u98ce\u9669\u6295\u8d44\u54e6!\u6211\u60f3\u501f\u5341\u4e07\u529e\u4e00\u4e2a\u517b\u6b96\u5382\u3002\u6211\u53ef\u662f\u6709\u5bb6\u5ead\u62c5\u4fdd\u7684\u54e6!#\u4e0a\u7f51\u7231\u901b\u4ec0\u4e48
这里主要是使用的Parse方法
看具体实现吧
[C#] 纯文本查看 复制代码
private void Form1_Load(object sender, EventArgs e)
        {
            string str = @"\u8c01\u80fd\u591f";

            str = UniconToString(str);
        }
        /// <summary>
        /// 将Unicon字符串转成汉字String
        /// </summary>
        /// <param name="str">Unicon字符串</param>
        /// <returns>汉字字符串</returns>
        public string UniconToString(string str)
        {
            string outStr = "";
            if (!string.IsNullOrEmpty(str))
            {
                string[] strlist = str.Replace("\\", "").Split('u');
                try
                {
                    for (int i = 1; i < strlist.Length; i++)
                    {
                        //将unicode字符转为10进制整数,然后转为char中文字符
                        outStr += (char)int.Parse(strlist, System.Globalization.NumberStyles.HexNumber);
                    }
                }
                catch (FormatException ex)
                {
                    outStr = ex.Message;
                }
            }
            return outStr;
        }





1. 开通SVIP会员,免费下载本站所有源码,不限次数据,不限时间
2. 加官方QQ群,加官方微信群获取更多资源和帮助
3. 找站长苏飞做网站、商城、CRM、小程序、App、爬虫相关、项目外包等点这里
 楼主| 发表于 2013-6-24 13:10:48 | 显示全部楼层
try 发表于 2013-6-24 02:50
网页上有其他字符呢?   提示输入的字符串不正确

那是肯定的,这只能转Unicode字符串
 楼主| 发表于 2014-4-8 08:21:45 | 显示全部楼层
发条陈 发表于 2014-4-7 20:45
贡献给LZ
[mw_shl_code=csharp,true]public string test(string data)
{

这个方法很好
 楼主| 发表于 2014-7-15 15:13:44 | 显示全部楼层
sandy1231 发表于 2014-7-15 15:10
这个方法好像不行吧,我测试过
如果是这样写
string str="\u8c01\u80fd";

把那个第二行删除也可以啊。
站长苏飞 发表于 2014-4-8 08:21
这个方法很好


string str="\u8c01\u80fd";
string result=test(str);
你这样得不到值吗?
 楼主| 发表于 2014-7-15 15:23:20 | 显示全部楼层
sandy1231 发表于 2014-7-15 15:20
string str="\u8c01\u80fd";
textbox1.test=str;
这样就可以获取到值了

人家提供的就是一个方法,你只要调用就行了,没必要定义那么多东西
你现在是根据就没有使用别人的方法。你得到的是汉字吗?
 楼主| 发表于 2014-7-15 15:37:09 | 显示全部楼层
sandy1231 发表于 2014-7-15 15:33
我刚才测试了好久了
如果是直接定义的unicode编码,比如
string str="\u8C01\u80FD";

好吧服了,我不再说什么?以后你会懂的。
 楼主| 发表于 2014-7-15 15:49:06 | 显示全部楼层
sandy1231 发表于 2014-7-15 15:47
string str="\u8C01\u80FD";
MessageBox.Show(str);
上面这段得出中文结果

Resource1.String1你这是什么啊,具体内容是什么只查Unicode字符肯定可以转化的
 楼主| 发表于 2014-7-15 15:51:35 | 显示全部楼层
sandy1231 发表于 2014-7-15 15:50
Resource1.String1是资源文件里的字符串,里面是\u8C01\u80FD

那不应该吧,你取出来看看格式对不对。string str="\u8C01\u80FD"; 这个都可以,如果你的得到是正常的字符串不应该不行的,
你也取到Str里看看是什么应该就明白为什么不行了。
 楼主| 发表于 2014-7-15 16:13:45 | 显示全部楼层
sandy1231 发表于 2014-7-15 16:02
格式是没有问题的,
string str="\u8C01\u80FD";
MessageBox.Show(str);

这和是不是变量没有关系,只要你的格式正确肯定是对的,只有一种情况就是你的格式不对,你打印出来看一下不行吧,说这么多不如打出来看看,我测试过这个方法是可以的,肯定和变量不变量的没有关系的。
 楼主| 发表于 2014-7-15 16:36:47 | 显示全部楼层
sandy1231 发表于 2014-7-15 16:27
那麻烦把你的测试的代码发给我吧,这个可以说明问题了

这就是一个方法,还要什么测试代码,现在最重要是不知道你传的数据是什么,你光说不行,这其实是不叫理啊,谁知道你传是什么,说不定是乱写的一堆东西,呵呵。话虽说有点过了,但是道理就是这样的。我们的源码都在这里放着,调用方法就是一句话
string str="\u8c01\u80fd";
string result=test(str);
result就是想要的结果。

而你的数据不清楚是什么,所以现在封闭的地方是在你的数据而不是我的例子,我的例子就是上面的代码,肯定可以,
str就是变量。任何Unicode字符都可以转化。
您需要登录后才可以回帖 登录 | 马上注册

本版积分规则

QQ|手机版|小黑屋|手机版|联系我们|关于我们|广告合作|苏飞论坛 ( 豫ICP备18043678号-2)

GMT+8, 2024-4-29 13:10

© 2014-2021

快速回复 返回顶部 返回列表