this.getClass().getClassLoader().getResource("")遇到有中文路径的解决方法

使用this.getClass().getClassLoader().getResource("").getPath() 获取中文名的文件路径,并向mysql中插入二进制数据,但是发生了错误,打印路径,发现路径是乱码,就感觉应该是

编码的问题,百度查了下,找到别人提供的解决方法,经测试,可行。

http://blog.csdn.net/lzzyok/article/details/7886914

在使用类似这样:

Java代码

  1. this.getClass().getClassLoader().getResource("").getPath()

来获取文件路径时,里面的路径空格会被“%20”代替,这时候如果你用这个获取到的包含“%20”的路径来new一个File时,会出现找不到路径的错误。

于是有以下官方解决方法:

Java代码

  1. URI uri = new URI(url.toString());
  2. FileInputStream fis = new FileInputStream(uri.getPath())

但有另一种解决方法:

Java代码

  1. configPath = java.net.URLDecoder.decode(configPath,"utf-8");

于是乎,问题解决了……

时间: 2024-08-28 07:50:53

this.getClass().getClassLoader().getResource("")遇到有中文路径的解决方法的相关文章

this.getClass().getClassLoader().getResourceAsStream()和this.getClass().getClassLoader().getResource()用法

this.getClass().getClassLoader().getResource() this.getClass().getClassLoader().getResourceAsStream() 专门用来 读取资源文件    test文件内容 测试类路径 测试文件路径 测试 类的根目录就是bin(专放class文件)  测试文件的也是在根目录的file文件 中 原文地址:https://www.cnblogs.com/xiaotong1223/p/9379056.html

this.getClass().getClassLoader().getResourceAsStream(fileName)中的路径问题。(引用)

ClassLoader.readResourceAsStream 是从 classpath 中读取,也就是说目标资料必须在某个 classpath 节点路径中,比如在某个磁盘文件夹 bin 中或某个 jar 文件里面.放在 src 里面的话,eclipse 会自动在编译时默认地复制到 bin 目录下,当然你可以故意禁用这个默认功能(参数页中 Java > Compiler > Building 里面有个 Filtered Resources).eclipse 默认配置下你放在 src 下面就可

Sublime Text 3打开txt中文乱码的解决方法

Sublime Text是一个非常强大的编辑器,可是对中文的支持并不好,在Sublime Text 2 时,可以通过命令行的方式安装编码包来解决,但Sublime Text 3不能通过这样的方式解决 在安装完Sublime Text 3后要下载一个ConvertToUTF8包放到C:\Users\用户名\AppData\Roaming\Sublime Text 3\Packages(安装目录可能不是这个,但可以在sublime中preference - browse packages打开此目录)

Visual Assist X在Windows 8.1下出现中文乱码的解决方法

这主要是输入法造成的,我的输入法中有US.中文.搜狗输入法三个输入法:通过搜狗输入法管理器把"中文"去掉,或者通过语言首选项把"中文"去掉就不会在出现乱码. 这个办法的思路来自于http://www.cnblogs.com/Coling/p/3527233.html,但他说的是把除搜狗之外的都删除,我不赞同,作为开发者,经常输入英文,且经常使用Shift,只保留搜狗,那写代码时要累死.于是尝试删除"中文",结果就搞定了. Visual Assis

提交数据的中文乱码的解决方法

使用GET方式提交数据的中文乱码的解决方法: 使用URLEncoder.encode(name,"UTF-8")进行url编码:      String path = "http://192.168.22.136:8080/web/servlet/LoginServlet?username="+URLEncoder.encode(name,"UTF-8")+"&password="+URLEncoder.encode(

SSH Secure Shell Client中文乱码的解决方法

这是SSH Secure Shell Client多年未解决的短板,要求客户端和服务器端都要'UTF-8'编码,Windows中文版的编码是非UTF-8.zh_CN.UTF-8是UTF编码的中文语言环境.Windows使用的是GB2312编码,大多数linux系统支持的是UTF-8编码,而远程登陆时使用的是本地编码,所以会出现乱码的问题:现有几种解决方案: 方案一:修改linux服务器的环境变量 使用linux,在用户根目录下有一个.bash_profile配置文件,该配置只对当前用户有效.若对

php读取mssql日期出现中文字符的解决方法

php读取mssql日期出现中文字符的解决方法 在php代码开头处加下以下代码 ini_set ("mssql.datetimeconvert","0");//关闭mssql默认的日期格式转换 php读取mssql日期出现中文字符的解决方法,布布扣,bubuko.com

c#写入Mysql中文显示乱码 解决方法 z

mysql字符集utf8,c#写入中文后,全部显示成?,一个汉字对应一个? 解决方法:在数据库连接字符串中增加字符集的说明,Charset=utf8,如 MySQLConnection con = new MySQLConnection("server=127.0.0.1;uid=root;pwd=;database=test;Charset=utf8"); 搞定 c#写入Mysql中文显示乱码 解决方法 z,布布扣,bubuko.com

PLSQL执行sql语句输出的中文是???之解决方法和步骤

方法/步骤 1 登陆plsql,执行sql语句,输出的中文标题显示成问号????:条件包含中文,则无数据输出 步骤阅读 2 输入sql语句select * from V$NLS_PARAMETERS查看字符集,查看第一行value值是否为简体中文 步骤阅读 3 进入注册表,依次单击HKEY_LOCAL_MACHINE --->SOFTWARE ---> ORACLE--->home(小编安装的是Oracle 11g,这里显示成KEY_OraDb11g_home1),找到NLS_LANG,