C/C++教程

中文路径乱码问题,URLDecoder.decode的坑

本文主要是介绍中文路径乱码问题,URLDecoder.decode的坑,对大家解决编程问题具有一定的参考价值,需要的程序猿们随着小编来一起学习吧!

中文路径乱码问题
看网上的解决方案,大多是

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

无效
改为"gbk" 无效
无效原因:
分析方法实现是对%xx 格式的东西做转码 ,我的url是编译器gbk读文件utf-8的乱码不是这种的,所以他没给处理
使用这个方法前记得确认url是不是%xx的形式,还是单纯的乱码,%在url中是有特殊含义的,需要做转义
这个方法处理URL的乱码,实际上做了%的转义
可以考虑用自己转编码(仅提供思路),但实际上处理编译器编码或者直接改文件编码能解决大多数问题

new String(path.getBytes(),"utf-8"); 
new String(path.getBytes("GBK"),"utf-8");

乱码原因:
文件是utf-8编码
编译项目 用gbk编译的
编码不匹配
给编译器加上-encoding utf-8
成功得到正确路径

更坑的一点是我就那两个文件时utf-8的编码,其他文件是GBK编码
导致了新的乱码
所以把编译器加上的-encoding utf-8去掉,把两个文件的编码改成GBK结束问题

IDEA查看修改文件编码的地方

这篇关于中文路径乱码问题,URLDecoder.decode的坑的文章就介绍到这儿,希望我们推荐的文章对大家有所帮助,也希望大家多多支持为之网!