2019独角兽企业重金招聘Python工程师标准>>>

/* 输出
Original:       黄   彪彪
to unicode:     \u9EC4\ \t\u5F6A\u5F6A
from unicode:   黄   彪彪
使用命令转换: native2ascii -encoding utf-8 a.txt a.txt
Java的properties属性文件会把字符先转换成unicode的形式存储.
*/import java.io.UnsupportedEncodingException;public class UnicodeConverter {public static void main(String[] args) throws UnsupportedEncodingException {String s = "黄 \t彪\u5F6A";System.out.println("Original:\t\t" + s);s = toEncodedUnicode(s, true);System.out.println("to unicode:\t\t" + s);s = fromEncodedUnicode(s.toCharArray(), 0, s.length());System.out.println("from unicode:\t" + s);}private static final char[] hexDigit = { '0', '1', '2', '3', '4', '5', '6', '7', '8', '9', 'A','B', 'C', 'D', 'E', 'F' };private static char toHex(int nibble) {return hexDigit[(nibble & 0xF)];}/*** 将字符串编码成 Unicode 形式的字符串. 如 "黄" to "\u9EC4"* Converts unicodes to encoded \\uxxxx and escapes* special characters with a preceding slash* * @param theString*        待转换成Unicode编码的字符串。* @param escapeSpace*        是否忽略空格,为true时在空格后面是否加个反斜杠。* @return 返回转换后Unicode编码的字符串。*/public static String toEncodedUnicode(String theString, boolean escapeSpace) {int len = theString.length();int bufLen = len * 2;if (bufLen < 0) {bufLen = Integer.MAX_VALUE;}StringBuffer outBuffer = new StringBuffer(bufLen);for (int x = 0; x < len; x++) {char aChar = theString.charAt(x);// Handle common case first, selecting largest block that// avoids the specials belowif ((aChar > 61) && (aChar < 127)) {if (aChar == '\\') {outBuffer.append('\\');outBuffer.append('\\');continue;}outBuffer.append(aChar);continue;}switch (aChar) {case ' ':if (x == 0 || escapeSpace) outBuffer.append('\\');outBuffer.append(' ');break;case '\t':outBuffer.append('\\');outBuffer.append('t');break;case '\n':outBuffer.append('\\');outBuffer.append('n');break;case '\r':outBuffer.append('\\');outBuffer.append('r');break;case '\f':outBuffer.append('\\');outBuffer.append('f');break;case '=': // Fall throughcase ':': // Fall throughcase '#': // Fall throughcase '!':outBuffer.append('\\');outBuffer.append(aChar);break;default:if ((aChar < 0x0020) || (aChar > 0x007e)) {// 每个unicode有16位,每四位对应的16进制从高位保存到低位outBuffer.append('\\');outBuffer.append('u');outBuffer.append(toHex((aChar >> 12) & 0xF));outBuffer.append(toHex((aChar >> 8) & 0xF));outBuffer.append(toHex((aChar >> 4) & 0xF));outBuffer.append(toHex(aChar & 0xF));} else {outBuffer.append(aChar);}}}return outBuffer.toString();}/*** 从 Unicode 形式的字符串转换成对应的编码的特殊字符串。 如 "\u9EC4" to "黄".* Converts encoded \\uxxxx to unicode chars* and changes special saved chars to their original forms* * @param in*        Unicode编码的字符数组。* @param off*        转换的起始偏移量。* @param len*        转换的字符长度。* @param convtBuf*        转换的缓存字符数组。* @return 完成转换,返回编码前的特殊字符串。*/public static String fromEncodedUnicode(char[] in, int off, int len) {char aChar;char[] out = new char[len]; // 只短不长int outLen = 0;int end = off + len;while (off < end) {aChar = in[off++];if (aChar == '\\') {aChar = in[off++];if (aChar == 'u') {// Read the xxxxint value = 0;for (int i = 0; i < 4; i++) {aChar = in[off++];switch (aChar) {case '0':case '1':case '2':case '3':case '4':case '5':case '6':case '7':case '8':case '9':value = (value << 4) + aChar - '0';break;case 'a':case 'b':case 'c':case 'd':case 'e':case 'f':value = (value << 4) + 10 + aChar - 'a';break;case 'A':case 'B':case 'C':case 'D':case 'E':case 'F':value = (value << 4) + 10 + aChar - 'A';break;default:throw new IllegalArgumentException("Malformed \\uxxxx encoding.");}}out[outLen++] = (char) value;} else {if (aChar == 't') {aChar = '\t';} else if (aChar == 'r') {aChar = '\r';} else if (aChar == 'n') {aChar = '\n';} else if (aChar == 'f') {aChar = '\f';}out[outLen++] = aChar;}} else {out[outLen++] = (char) aChar;}}return new String(out, 0, outLen);}
}

转载于:https://my.oschina.net/HuifengWang/blog/232964

Java:转换汉字为unicode形式的字符串和转换unicode形式字符串转换成汉字相关推荐

  1. java 0x转中文_Java:转换汉字为unicode形式的字符串和转换unicode形式字符串转换成汉字...

    /* 输出 Original: 黄 彪彪 to unicode: \u9EC4\ \t\u5F6A\u5F6A from unicode: 黄 彪彪 使用命令转换: native2ascii -enc ...

  2. java密码框转字符串_实现汉字的凯撒密码(内容包括:去掉字符串中的转义字符、汉字的unicode转换)...

    实验内容: 选择合适的秘钥,利用上述三个算法:熟悉恺撒密码.双重置换密码.一次一密密码算法.加密如下明文: 大风起兮云飞扬, 威加海内兮归故乡, 安得猛士兮守四方. <大风歌>--刘邦 3 ...

  3. 转换汉字为unicode形式的字符串和转换unicode形式字符串转换成汉字

    http://www.cppblog.com/biao/archive/2013/07/04/137087.html /* 输出 Original: 黄 彪彪 to unicode: \u9EC4\ ...

  4. java自动转换需要的开头_【Java基础】Java把\u开头的Unicode编码转换成汉字

    最近工作中遇到需要调用第三方接口的需求.第三方接口返回的字符串中,会把中文转义成 \u + Unicode 的形式.因此,我需要再把 \u + Unicode 转换成汉字. 这里,我们需要认识到 Ja ...

  5. 【简单易懂】Java字符串应用场景:数字金额转换成大写汉字金额【金额转换】

    Java字符串应用场景:数字金额转换成汉字金额 文章目录 Java字符串应用场景:数字金额转换成汉字金额 前言 一.String简单介绍 二.字符串在开发中的应用场景 三.金额转换 3.1解题思路 3 ...

  6. 将unicode转换成汉字

    将unicode转换成汉字的引申 unicode转换成汉字方法: public static String UnicodeToString(String str) { Pattern pattern ...

  7. 汉字编码(【Unicode】 【UTF-8】 【Unicode与UTF-8之间的转换】 【汉字 Unicode 编码范围】【中文标点Unicode码】【GBK编码】【批量获取汉字UNICODE码】)

    参考博客: Unicode与UTF-8互转(C语言实现):http://blog.csdn.net/tge7618291/article/details/7599902 汉字 Unicode 编码范围 ...

  8. java实现数字金额转换成汉字大写金额

    我们经常在做项目的财务报表,需要打印发票等情况时需要用到小写的财务金额要转换成汉字的大写金额,下面就是实现该功能的代码 import java.lang.Math; /** *通用型金钱转换类 * * ...

  9. Unicode中的UTF-8, UTF-16, UTF-16LE, UTF-16BE编码及转换 | Java基础

    原文1链接:[Charset]UTF-8, UTF-16, UTF-16LE, UTF-16BE的区别 原文2链接:UTF8,UTF16,UTF32,UTF16-LE,UTF16-BE,GBK 之间的 ...

  10. python unicode转字符串_Python: 在Unicode和普通字符串之间转换

    Unicode字符串可以用多种方式编码为普通字符串, 依照你所选择的编码(encoding):Toggle line numbers1 #将Unicode转换成普通的Python字符串:"编 ...

最新文章

  1. 【linux】Valgrind工具集详解(九):Memcheck检查的内容和方法
  2. p1522 牛的旅行 Cow Tours
  3. Info.plist中常用的key简介
  4. 选择问题(求第k个最小元素)
  5. Taro+react开发(45)taro中组件生命周期
  6. 大流量场景下如何云淡风轻地进行线上发布?
  7. 首届React开发者大会于2018年8月18日在广州举办
  8. 工厂模式(简单工厂模式)快速理解
  9. VMware16虚拟机怎么共享文件夹?
  10. OpenGL环境配置(超全整合版)
  11. caffe的python接口学习(3):训练模型(training)
  12. sql 转html 中文乱码,SqlServer数据库中文乱码问题解决方法
  13. 蓝桥杯第十三届省赛题目(4月23日)答案汇总 python
  14. 五大常用算法学习笔记
  15. 【window】重启IIS服务
  16. 各种关于函数的定义01(高数)
  17. Android自动化批量图片压缩插件McImage
  18. 最新SEO寄生虫排名
  19. 硬盘柱面损坏怎么办_硬盘坏道屏蔽工具,详细教您如何修复硬盘坏道
  20. 未能联接game center服务器,苹果game center无法连接服务器怎么办呢?

热门文章

  1. PHP Fatal error: Declaration of Hyperf\Framework\SymfonyEventDispatcher::dispatch($event) must be c
  2. 六石管理学:做产品,要确定自己是太子还是陪太子
  3. 安卓自定义控件,自行绘制文字
  4. MAC编译freetype
  5. LINUX编译x265:make-Makefiles.bash: ccmake: not found
  6. JAVA设对话框的位置,setLocation/setBounds皆可
  7. 脚本比别人的代码都多
  8. 时空解析理论的实验检验方法
  9. python3中报错No module named 'numpy'
  10. 世界杯:为什么进攻大多沿着边路前进?