java:string2hexString 中文字符转码问题解决
来源:互联网 发布:怎么样开淘宝店的流程 编辑:程序博客网 时间:2024/06/08 12:27
java 中提供了一些字符串转码的工具类,比如:Base64
,UrlEncoder & UrlDecoder
。但是这些类,真的非常有局限性,转码之后的字符串,往往不能被当成文件路径识别。
于是将 字符串转成16进制的字符串就显得非常有必要了。因为16进制的字符串就是数字以及英文字母a-f组成的。所以,当成路径去解析是完全可以的。
import java.io.UnsupportedEncodingException;import java.util.Arrays;/** * Created by cat on 2017/8/25. */public class TransStringTool { public static void main(String[] args) throws UnsupportedEncodingException, InterruptedException { String origin = "你好啊啊啊啊;axxx---===><;"; byte[] bytes = origin.getBytes(); String hex = bytesToHexString(bytes); System.out.println(Arrays.toString(bytes) + " , " + hex); byte[] bb = hexStringToBytes(hex); String rr = new String(bb); System.err.println(Arrays.toString(bb) + " , " + rr); System.err.println("##########################################################"); System.err.println("##########################################################"); Thread.sleep(10); String result = "origin:" + origin + "\n" + "hexStr:" + str2HexStr(origin) + "\n" + "reOrigin:" + hexStr2Str(str2HexStr(origin)); System.out.println(result); } public static String str2HexStr(String origin) { byte[] bytes = origin.getBytes(); String hex = bytesToHexString(bytes); return hex; } public static String hexStr2Str(String hex) { byte[] bb = hexStringToBytes(hex); String rr = new String(bb); return rr; } private static String bytesToHexString(byte[] src) { StringBuilder stringBuilder = new StringBuilder(""); if (src == null || src.length <= 0) { return null; } for (int i = 0; i < src.length; i++) { int v = src[i] & 0xFF; String hv = Integer.toHexString(v); if (hv.length() < 2) { stringBuilder.append(0); } stringBuilder.append(hv); } return stringBuilder.toString(); } private static byte[] hexStringToBytes(String hexString) { if (hexString == null || hexString.equals("")) { return null; } hexString = hexString.toUpperCase(); int length = hexString.length() / 2; char[] hexChars = hexString.toCharArray(); byte[] d = new byte[length]; for (int i = 0; i < length; i++) { int pos = i * 2; d[i] = (byte) (charToByte(hexChars[pos]) << 4 | charToByte(hexChars[pos + 1])); } return d; } /** * Convert char to byte * * @param c char * @return byte */ private static byte charToByte(char c) { return (byte) "0123456789ABCDEF".indexOf(c); }
- 这个代码不是完全原创的,也借鉴了网上的部分代码。不过使用起来的效果是极好的。
输出如下:
origin:你好啊啊啊啊;axxx---===><;hexStr:e4bda0e5a5bde5958ae5958ae5958ae5958a3b617878782d2d2d3d3d3d3e3c3breOrigin:你好啊啊啊啊;axxx---===><;
阅读全文
0 0
- java:string2hexString 中文字符转码问题解决
- AJAX中文字符问题解决
- java 向 mysql插入中文字符乱码问题解决
- java中文字符转码的思考
- Java--中文字符转GBK码
- [转]Java/JSP中文乱码问题解决心得
- [转]Java/JSP中文乱码问题解决心得
- Java中文问题解决方案
- JAVA中文问题解决总结
- JAVA中文问题解决总结
- java中文问题解决方案
- java中文问题解决方法
- java中文乱码问题解决
- Java代码中转码 中文字符转UTF-8编码
- JSP字符中文乱码问题解决方法汇总
- php中文字符替换乱码问题解决
- Android APP 源码中文字符乱码问题解决
- MySQL插入中文字符不成功问题解决
- Android7.1上报的CNEService/WbcService/LauncherUnreadService停止运行错误,拔掉电池重启开机几次才不报
- Hadoop入门之几个Demo的加强版本
- BZOJ 2440 完全平方数 (二分 莫比乌斯容斥)
- poj 1837
- 记录git常用操作命令
- java:string2hexString 中文字符转码问题解决
- 17AHU排位赛3 C题 (LCS)
- 感想
- mac 安装 RabbitMQ
- Tomcat |Tomcat设置远程调试参数
- Linux学习——Shell编程学习笔记
- 机器学习- TF-IDF源代码实现
- Android 设置横屏或竖屏
- 第五课 511遇见易语言大漠找字FindStrE FindStrFastE系列