关于C#(生僻字、繁体字)和Java的URL转码GBK后结果不一样的问题解决
业务背景:
1 public static void ConvertURLGBKEnCode() 2 { 3 string str2 = "赟俶鎮臨釵阁紅昇號瀍業區號鋕發廠劉東區灣業區實業蘭創黃鐰甪恆"; 4 5 string str = string.Empty; 6 string urlEnCodeStr = string.Empty; 7 Regex reg = new Regex(@"[\u4e00-\u9fa5]");//正则表达式 8 StringBuilder sb1 = new StringBuilder(); 9 for (int i = 0; i <= str2.Length - 1; i++) 10 { 11 string tempStr = str2[i].ToString(); 12 urlEnCodeStr = System.Web.HttpUtility.UrlEncode(tempStr, Encoding.GetEncoding("GBK")); 13 14 // 如果是汉子的话,将URL编码过后再进行16进制转换 15 if (reg.IsMatch(tempStr)) 16 { 17 // 判断转码过后的字符,如果只有4位的话,代表最后一个字符需要转换成16进制行拼接 18 if (urlEnCodeStr.Length <= 4) 19 { 20 StringBuilder sb = new StringBuilder(); 21 string firstStr = urlEnCodeStr.Substring(0, 3); 22 string LastStr = urlEnCodeStr.Substring(3, 1); 23 sb.Append(firstStr + "%"); 24 byte[] targetData = Encoding.GetEncoding("GBK").GetBytes(LastStr); 25 for (int j = 0; j < targetData.Length; j++) 26 { 27 sb.Append(targetData[j].ToString("x2")); 28 } 29 sb1.Append(sb.ToString()); 30 } 31 else 32 { 33 sb1.Append(urlEnCodeStr); 34 } 35 } 36 else 37 { 38 sb1.Append(urlEnCodeStr); 39 } 40 } 41 42 Console.WriteLine(sb1.ToString()); 43 44 Console.ReadLine(); 45 }
View Code
对于汉字中的生僻字和繁体字问题已经解决了,但是刚刚有跑一下特殊符号又郁闷了。
将上面C#的代码 :if (reg.IsMatch(tempStr)) 改为 if (urlEnCodeStr.Length > 1) 对于GBK中包含的特殊字符都是可以顺利转换的,但是,不是GBK字符符号的转换就没法确认了。
如:符号:“-”
C#转换结果:“-”; Java:“-”
字符:"("
C# 转换结果: "(",而Java跑出来的结果却是"%28",关于这个左括号我查过了,是不属于GBK中的字符,应该也不算特殊字符,应该是直接显示的,像字母和数字以及"-"等字符一样,但就是不知道为什么,Java会转换成"%28"。
关于这个不是GBK的字符,进行转换GBK的问题还有待研究。
转载于:https://www.cnblogs.com/czmzhimin/p/3776943.html
关于C#(生僻字、繁体字)和Java的URL转码GBK后结果不一样的问题解决相关推荐
- unicode 生僻字_生僻字打不出来怎么办?教你一招轻松应对!
生僻字打不出来怎么办?正所谓大千世界无奇不有,有些朋友的名字总是那么的独癖,我们就算绞尽脑汁也未必能打出TA的名字,比如"日见","王莹"等生僻字,面对这样的生 ...
- 数据库存储解决生僻字
一.Oracle数据库 就一般情况来说,Oracle存储中英文的字段用varchar2类型就可以了,但有些时候,遇到生僻字就不行了, 在默认字符集环境下,实现Oracle储存生僻字: 㛃.䶮-(使用n ...
- 生僻字用计算机怎么弹歌曲,抖音生僻字计算器乐谱 计算器弹歌曲音乐乐谱大全...
抖音最近流行的歌曲<生僻字>大家都学会了吗?很多脸歌曲都还没学会呢,最近又出来了计算器简谱,来看看抖音生僻字计算器乐谱? 抖音生僻字计算器数字简谱: 近日,苏州90后小伙陈柯宇创作的歌曲& ...
- java生僻字_Android上显示生僻字的方法
安卓5.0+是可以显示所有(8万多个)Unicode汉字的,本文介绍显示生僻汉字的方法,这个方法也适用于其它特殊字符. Unicode值在0xFFFF以下的(2万多个简体.繁体)汉字早已被广泛支持,所 ...
- java获取生僻字_生僻字与16进制的转换
字符串中的生僻字在传输和存储的过程中存在着各种各样的问题,为了便于传输和存储,我们通常会把这些生僻字转换为16进制编码进行传输和存储. package com.dc.util; import java ...
- java校验中文姓名合法性(需要支持生僻字与分隔符·)
背景: 国家民委等单位关于在政府管理和社会公共服务信息系统中统一姓名采集应用规范的通知 对中文姓名合法性校验时,需要支持所有GB18030中涉及到的汉字(包括生僻字),并支持部分少数民族姓名中带有分隔 ...
- java生僻字解决方案
原帖见http://hi.baidu.com/xmltiger/blog/item/f86ebdec72332f4878f05591.html 有所增加内容 java应用中经常会碰到中文生僻字的输入和 ...
- Java中文生僻字排序
JDK中的java.text.Collator 排序处理生僻字会失败,现引入新的Jar包进行处理. 引入icu4j进行处理,改包主要是为软件应用提供Unicode和全球化支持的一套成熟.广泛使用的C/ ...
- c 传递流java 生僻字_Java语言中的生僻知识
最近有一首名叫<生僻字>的流行歌曲火遍大江南北,创作者给佶屈聱牙的生僻字,配上了优美明快的旋律,竟然让歌曲变得琅琅上口.悦耳动听起来,平时不太常见的拒人于千里之外的这些汉字也不再那么陌生, ...
最新文章
- .pgr照片文件解析,C++与Java存储数据差别大小端模式
- Android 读取xml转json,将XML转换为Android中的JSON对象
- qt中设置窗口左上角的图标
- linux 分区 var,Ubuntu下移动/var目录到单独分区后出现的一些问题
- CountDownLatch闭锁
- zabbix邮件脚本报警
- 红橙Darren视频笔记 builder设计模式+navigationBar导航条
- 2020年日历电子版(打印版)_灵感 | 快来康康——2020年的日历设计的这么有创意?...
- 心语收集11:我们可以经得起心脏的千疮百孔,可以接受感情的支离破碎,却不愿喝下忘情水,忘记那曾经爱过的人。...
- linux编译c文件for循环,Linux C 循环队列的实现
- 拓端tecdat|R语言中的prophet预测时间序列数据模型
- SQL Server性能优化(13)看懂查询计划
- 小程序如何上传代码到服务器,云服务器怎么上传小程序代码
- Byethost美国免费空间免费撸
- 英语听力采用计算机化考试,高考英语复习资料及听力机考特点与应对建议
- CentOS 8 如何更换yum源
- python matplotlib绘制折线图_Matplotlib实践系列:折线图完全示例
- 每个 iOS 开发者都应该关注的 5 个网站
- mysql数据库备份和恢复
- Linux内核配置(转)