首页 > 代码库 > 处理乱码问题
处理乱码问题
公司内部使用的feed程序读取本地文件存入DB时出现大量乱码问题,虽然qa/stage/live三套环境无论是DB编码配置,还是服务器系统编码都是相同的,却出现十分诡异的问题——qa/stage环境不能复现live的乱码问题。最终boss要求做一个程序监控,评估问题的情况以及后续跟踪bug是否真正修复。此问题最终证明root cause是使用getBytes()与new String(byte[], charset)的错误,即两者使用的charset不一致。值得记录的是监控程序
通过删除所有合法字符,留下非法字符的方式过滤出符合条件的记录
List<String> invalidContent = new ArrayList<String>(); String value; for (Entry<String, String> entry : getBodies(ids).entrySet()) { /** *  --\\u2009 * ‎--\\u200E */ value = entry.getValue().replaceAll("[\\u0000-\\u05FF\\u2009\\u200E]", ""); if (!"".equals(value)) { invalidContent.add(entry.getKey()); log.error(entry.getKey() + ":" + value); } }
使用正则的unicode区间参考
http://en.wikibooks.org/wiki/Unicode/Character_reference/0000-0FFF
http://en.wikibooks.org/wiki/Unicode/Character_reference/F000-FFFF
声明:以上内容来自用户投稿及互联网公开渠道收集整理发布,本网站不拥有所有权,未作人工编辑处理,也不承担相关法律责任,若内容有误或涉及侵权可进行投诉: 投诉/举报 工作人员会在5个工作日内联系你,一经查实,本站将立刻删除涉嫌侵权内容。