本文实例为大家分享了Java实现中文字符串与unicode互转的具体代码,供大家参考,具体内容如下
原理利用了java实现js的escape以及unescape函数。
/** * 中文字符串和unicode互转工具类 <br> * * @author hkb <br> */ public class UnicodeConvertUtils { /** * 实现js的escape函数 * * @param input * 待传入字符串 * @return */ public static String escape(String input) { int len = input.length(); int i; char j; StringBuffer result = new StringBuffer(); result.ensureCapacity(len * 6); for (i = 0; i < len; i++) { j = input.charAt(i); if (Character.isDigit(j) || Character.isLowerCase(j) || Character.isUpperCase(j)) { result.append(j); } else if (j < 256) { result.append("%"); if (j < 16) { result.append("0"); } result.append(Integer.toString(j, 16)); } else { result.append("%u"); result.append(Integer.toString(j, 16)); } } return result.toString(); } /** * 实现js的unescape函数 * * @param input * 待传入字符串 * @return */ public static String unescape(String input) { int len = input.length(); StringBuffer result = new StringBuffer(); result.ensureCapacity(len); int lastPos = 0, pos = 0; char ch; while (lastPos < len) { pos = input.indexOf("%", lastPos); if (pos == lastPos) { if (input.charAt(pos + 1) == 'u') { ch = (char) Integer.parseInt(input.substring(pos + 2, pos + 6), 16); result.append(ch); lastPos = pos + 6; } else { ch = (char) Integer.parseInt(input.substring(pos + 1, pos + 3), 16); result.append(ch); lastPos = pos + 3; } } else { if (pos == -1) { result.append(input.substring(lastPos)); lastPos = len; } else { result.append(input.substring(lastPos, pos)); lastPos = pos; } } } return result.toString(); } /** * unicode转中文 * * @param input * 待传入字符串 * @return */ public static String toGb2312(String input) { input = input.trim().replaceAll("(?i)\\\\u", "%u"); return unescape(input); } /** * 中文字符串转unicode * * @param input * 待传入字符串 * @return */ public static String toUnicode(String input) { input = input.trim(); String output = escape(input).toLowerCase().replace("%u", "\\u"); return output.replaceAll("(?i)%7b", "{").replaceAll("(?i)%7d", "}").replaceAll("(?i)%3a", ":") .replaceAll("(?i)%2c", ",").replaceAll("(?i)%27", "'").replaceAll("(?i)%22", "\"") .replaceAll("(?i)%5b", "[").replaceAll("(?i)%5d", "]").replaceAll("(?i)%3D", "=") .replaceAll("(?i)%20", " ").replaceAll("(?i)%3E", ">").replaceAll("(?i)%3C", "<") .replaceAll("(?i)%3F", "?").replaceAll("(?i)%5c", "\\"); } /** * 测试 * * @param args */ public static void main(String[] args) { System.out.println(toUnicode("你好")); System.out.println(toGb2312("\u4f60\u597d")); // 等同于上面 System.out.println(toGb2312("\\u4f60\\u597d")); } }
以上就是本文的全部内容,希望对大家的学习有所帮助,也希望大家多多支持小牛知识库。
本文向大家介绍C/C++字符串与数字互转的实现,包括了C/C++字符串与数字互转的实现的使用技巧和注意事项,需要的朋友参考一下 C数字转字符串 C字符串转数字 C++字符串转数字 C++11增加std::stoi/stol/stoll等等函数可以 转换 C++数字转字符串 C++11增加了全局函数std::to_string,以及std::stoi/stol/stoll等等函数 string和ch
主要内容:转换在java中,文本是以Unicode格式内部存储的。 如果输入/输出格式不同,则需要转换。 转换 以下示例将展示将Unicode字符串转换为UTF8字节,以及将UTF8字节转为Unicode字节转换。 文件:IOTester.java - 执行上面示例代码,得到以下结果 -
本文向大家介绍Python 字典与字符串的互转实例,包括了Python 字典与字符串的互转实例的使用技巧和注意事项,需要的朋友参考一下 字典转换为字符串 输出结果为: <class 'str'> --------------------------------------------------------------- 字符串转换为字典 输出结果为: <class 'dict'> 以上这篇Pyt
本文向大家介绍java中unicode和中文相互转换的简单实现,包括了java中unicode和中文相互转换的简单实现的使用技巧和注意事项,需要的朋友参考一下 如下所示: 以上这篇java中unicode和中文相互转换的简单实现就是小编分享给大家的全部内容了,希望能给大家一个参考,也希望大家多多支持呐喊教程。
本文向大家介绍C#实现实体类与字符串互相转换的方法,包括了C#实现实体类与字符串互相转换的方法的使用技巧和注意事项,需要的朋友参考一下 本文实例讲述了C#实现实体类与字符串互相转换的方法。分享给大家供大家参考。具体实现方法如下: 希望本文所述对大家的C#程序设计有所帮助。
问题内容: 在解析包含unicode转义序列的json字符串时,存在一个长期存在的错误。似乎需要修复该错误,这种错误可能很快就不会发生,因此我正在寻找一种在R中创建解决方法的方法,该方法在将序列提供给json解析器之前先取消序列化。 一些上下文:json数据始终是unicode,默认情况下使用,因此通常不需要转义。但是出于历史原因,json确实支持转义的unicode。因此json数据 和 是等效