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

苏飞论坛

 找回密码
 马上注册

QQ登录

只需一步,快速开始

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

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

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

查看: 40968|回复: 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-4-24 18:02:12 | 显示全部楼层
受教了,学习中……     sofa
发表于 2013-6-24 02:50:30 | 显示全部楼层
网页上有其他字符呢?   提示输入的字符串不正确
 楼主| 发表于 2013-6-24 13:10:48 | 显示全部楼层
try 发表于 2013-6-24 02:50
网页上有其他字符呢?   提示输入的字符串不正确

那是肯定的,这只能转Unicode字符串
发表于 2013-6-27 17:58:33 | 显示全部楼层
楼主很棒!
回复

使用道具 举报

发表于 2014-3-12 01:12:38 | 显示全部楼层
受教了,学习中……
 楼主| 发表于 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 14:56:35 | 显示全部楼层
发条陈 发表于 2014-4-7 20:45
贡献给LZ
[mw_shl_code=csharp,true]public string test(string data)
{

不知为什么这方法好奇怪,有时行有时不行,调试的时候发现代码还没跑进去,数据都已经转换好中文了
发表于 2014-7-15 15:10:31 | 显示全部楼层

这个方法好像不行吧,我测试过
如果是这样写
string str="\u8c01\u80fd";
string result=test(str);
其实第一行定义str的时候就已经转换好了,把第二行删了一样可以。
而如果写成:
string str=Resource1.String1;
string result=test(str);
这样就不行了

这方法是无效的
 楼主| 发表于 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);
你这样得不到值吗?
您需要登录后才可以回帖 登录 | 马上注册

本版积分规则

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

GMT+8, 2024-12-19 05:16

© 2014-2021

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