oracle数据库字符集US7ASCII,在java中处理中文问题
原来项目中oracle数据库一直是US7ASCII,我新项目对接的时候,查询以及插入中文,出现乱码问题。
暂时未能解决此问题,最终决定每次转码:
查询的时候:
1 List<Record> list = Db.use("oracle").find("select * from order order by id desc"); 2 for (Record record : list) { 3 String str = record.getStr("department"); 4 String ss = ""; 5 if(str!=null) 6 ss = ArticleUtil.convert(str,"gbk"); 7 record.set("department",ss ); 8 }
关于转码的操作:
1 public static String convert(String str,String charsetName){ 2 String result = "未识别"; 3 try { 4 result = new String(str.getBytes("ISO-8859-1"),charsetName); 5 } catch (UnsupportedEncodingException e) { 6 e.printStackTrace(); 7 } 8 return result; 9 }
插入和更新的时候,处理中文:
public void testSave(){ String username = getPara("username"); String password = getPara("password"); String department = getPara("department"); try { department=new String(department.getBytes("gbk"),"iso-8859-1"); } catch (UnsupportedEncodingException e) { // TODO Auto-generated catch block e.printStackTrace(); } Record r = new Record().set("department",department) .set("username",username).set("password",password); Db.use("oracle").save("user", r); renderJson(); }
也就是说,当读取的时候,从数据中得到中文字符,然后以iso-8859-1 encode,再以gbk decode来正确显示中文,
当写入的时候,需要将中文字符 以gbk encode,再以iso-8859-1 decode,写入数据库。
关注我的公众号

【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· Linux系列:如何用heaptrack跟踪.NET程序的非托管内存泄露
· 开发者必知的日志记录最佳实践
· SQL Server 2025 AI相关能力初探
· Linux系列:如何用 C#调用 C方法造成内存泄露
· AI与.NET技术实操系列(二):开始使用ML.NET
· 无需6万激活码!GitHub神秘组织3小时极速复刻Manus,手把手教你使用OpenManus搭建本
· C#/.NET/.NET Core优秀项目和框架2025年2月简报
· Manus爆火,是硬核还是营销?
· 终于写完轮子一部分:tcp代理 了,记录一下
· 【杭电多校比赛记录】2025“钉耙编程”中国大学生算法设计春季联赛(1)