解决使用ScriptRunner执行sql脚本中文乱码的问题
分类:计算机 | Java | Java-IO | 输入和输出 1641
更新:2020-11-05 00:21:17编辑
1 问题说明
最近在使用ScriptRunner执行sql脚本时发现一个问题,就是如果sql脚本中有中文,使用FileReader直接读取sql脚本的话会出现中文乱码的情况,导致脚本执行失败。 原来的代码如下:
Reader read = new FileReader(new File("temp.sql"));
System.out.println("读取路径read================" + read);
runner.runScript(read);
runner.closeConnection();
conn.close();
System.out.println("sql脚本执行完毕");
2 问题分析
文件流读取时使用的编码方式和文件本身编码方式不同,造成读取出来文件乱码。
3 问题解决
读取文件时指定读取文件的编码方式。代码如下:
InputStreamReader isr = new InputStreamReader(new FileInputStream(new File("temp.sql")), "UTF-8");
BufferedReader br = new BufferedReader(isr);
runner.runScript(br);
runner.closeConnection();
conn.close();
System.out.println("sql脚本执行完毕");
使用FileInputStream类读取文件流,BufferedReader构造方法只能接收字符流,利用InputStreamReader将文件流转化为字符流,同时指定文件流的编码方式,将字符流放到 BufferedReader中再进行操作,可以解决中文读取乱码问题。
4 参考资料
猿导航
阅读排行榜
- 1vue和el-table使用经验-如何刷新表格数据10949
- 2three.js加载3D瓦片和3dtiles数据生成交互式地图的开源项目9499
- 3Microsoft Visual C++ Redistributable是什么,有什么作用?7275
- 4mybatis使用经验——mybatis-spring-boot-starter和mybatis的版本对应关系表(持续更新~)5843
- 5uni-app使用经验—vue页面和html页面如何互相调用接口并传参5484
- 6Intellij IDEA下的版本控制VCS的启用与关闭4899
- 7Spring学习经验—@ResponseBody注解的使用说明4894
- 8Druid异常解决经验—java.sql.SQLException url not set4514
- 9如何用批处理命令(bat脚本)启动和停止windows服务4282
- 10nuxt.js项目中如何添加和使用全局变量4158
- 11解决SpringBoot使用maven下载不了jar包的问题3498
- 12linux中解压tar.gz文件报错“gzip: stdin: invalid compressed data--format violated”3394
- 13nuxtjs asyncData使用经验—如何发起多个axios请求并携带参数3247
- 14在Nuxt.js项目的head中引用外部js文件3089
- 15在NVIDIA控制面板设置参数时提示“拒绝访问 无法应用选定的设置到您的系统”的解决方法之一3066