java字符串和unicode互转
2024-10-11 13:50:05
直接上代码
private static String decodeUnicode(String input) {
if (null == input)
return input;
int len = input.length();
StringBuilder output = new StringBuilder(len);
for (int x = 0; x < len; x++) {
char ch = input.charAt(x);
if (ch != '\\') {
output.append(ch);
} else {
x++;
if (x != len) {
ch = input.charAt(x);
if (ch == 'u') {
if (x + 5 > len) {
output.append(input.substring(x - 1));
x += 4;
} else {
String val = input.substring(x + 1, x + 5);
try {
output.append((char) Integer.parseInt(val, 16));
} catch (NumberFormatException e) {
output.append(input.substring(x - 1, x + 5));
}
x += 4;
}
} else
output.append(ch);
}
}
}
return output.toString();
} private static String encodeUnicode(String input) {
if (null == input)
return input;
int len = input.length();
StringBuilder output = new StringBuilder(len * 2);
for (int x = 0; x < len; x++) {
char ch = input.charAt(x);
if ((ch < ' ') || (ch > '~')) {
output.append("\\u");
String hex = Integer.toHexString(ch);
for (int i = 0; i < 4 - hex.length(); i++) {
output.append('0');
}
output.append(hex);
} else {
output.append(ch);
}
}
return output.toString();
}
注意stringbuilder和stringbuffer的区别
stringbuffer线程安全,stringbuilder线程不安全,二者功能完全一样。没有异步情况stringbuilder会快一些。
最新文章
- 用C语言编写生成小学四则运算程序
- log4Net控制台输出
- SQL中对于两个不同的表中的属性取差集except运算
- ssm+redis 如何更简洁的利用自定义注解+AOP实现redis缓存
- Equivalent Strings
- MFC窗口和控件大小等比例变化
- spring4 文件下载功能
- Oracle 12C RAC的optimizer_adaptive_features造成数据插入超时
- 如何在Unity中播放影片
- 【转载】C++中结构体的声明和定义
- UVa 11489 (博弈) Integer Game
- 李洪强iOS开发之图片拉伸技巧
- 【转载】doxygen+graphviz生成代码文档
- 【JAVASCRIPT】React学习-组件生命周期
- NodeJS项目迁移兼Ubuntu下NodeJS环境部署
- 基于MATLAB边缘检测算子的实现
- WFP在包含fwpmu.h头的时候出错
- Autofac之生命周期和事件
- gentoo 画框架图,流程图
- 08 集合[11,22,33,44,55,66,77,88,99],将所有<;66的值保存至字典的第一个key中,将所有>;=66的值保存至字典的第二个key中。即:{&#39;k1&#39;:<;66的所有值,&#39;k2&#39;:>;=66的所有值}