java数据迁移,中文路径个别无法打开啥原因,解决办法是啥

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了java数据迁移,中文路径个别无法打开啥原因,解决办法是啥相关的知识,希望对你有一定的参考价值。

数据重服务器迁移到云上面去,导致以前的静态资源个别无法访问,中文路径的问题,个别中文路径无法访问,不是全部,应该不是编码的问题,静态资源存在去掉中文或者更改为可识别的中文就可以访问到,那么问题来了为什么个别中文无法识别,如号,黔,新等无法识别 修改liunx系统编码为zh-cn.utf-8也不行,或者说清楚网页访问静态资源的原理也可以,没有经过数据库,通过convmv -f
GBK -t UTF-8 --notest *.pdf转文件编码也不能解决而且也添加了
clannad after story编码过滤器,话说会不会是这个编码过滤器出了问题

您好,不管您现在是否解决了中文路劲的问题。建议您,将路径改为英文路径,因为作为程序员不应该把路径设置成中文,路径设置成中文会出现意想不到的结果。假如下次又让你迁移数据到另一个地方,是否又要解决同样的问题呢?您说是不是。所以,不要在用中文路径了。
还有就是,如果非要解决中文路径问题看看,代码编码是否和系统编码一样(假如不一样,解析出来的路径肯定就是错误的)。
如果想确定服务器是否正确接收到了正确的请求路径,可以通过nginx(如果有使用nginx)输出一下
你如果用到了权限,看看是否是权限不足导致的,毕竟看不到你的请求的response追问

这是之前用的中文路径,现在已经是用英文路径了,但是之前的数据也要想办法解决,在本地的话中文路径能访问,但是相同的路径服务器上的没办法访问

追答

相同的路径在本地,与在服务器上不一定相同(如果资源没有放在项目里而是放在服务器上的某个文件夹的话,那么访问路径是当前项目的相对位置,或者绝对位置)。服务器文件夹地址是绝对位置是/home,/root等开头
如果能够访问的文件和不能访问的文件,在服务器上是同文件夹下,那么查看资源名是否写对了,但是考虑到,没有迁移前,资源都可以访问。所以还是不能确定原因,看不到出错的response以及成功访问的response

追问

现在的中文路径是有个别能访问的,不能访问的中文路径将路径中不能访问的中文字符变成能识别的字符就可以访问了,应该是编码问题,但是不知道哪个位置的编码出现了问题,而且这个编码差别不是很大,因为有个别的中文能识别,猜测是解码的时候单与双的问题

参考技术A 先确定你迁移后服务器上的中文显示是否正常,再看看你的静态资源服务器URI编码是不是用utf-8的,比如tomcat,server.xml里加上URIEncoding="UTF-8"再试试看。
<Connector port="8080" protocol="HTTP/1.1"
connectionTimeout="20000"
redirectPort="8443" URIEncoding="UTF-8" />追问

加了nginx反向代理,加了utf-8还是没有效果该看到的还是能看到看不到的还是看不到,添加了编码过滤器会不会是这个出了问题,但是过滤器设置的也是utf-8呀

追答

浏览器里输入文件地址,打开console看看不能访问的文件的http response code是多少,403、404还是别的?

追问

添加这个后,一开始修改重启不能访问(可能是缓存的问题),回来因为工作需要重启服务器后就可以了,应该就是这个问题,顺便说一下是404,如果可以的话能补充一下这个请求的原理吗

追答

是说URIEncoding="UTF-8"吗?这个就是告诉容器用utf-8来解析URL,默认的话是用ISO-8859-1,因为你路径里带中文,一般浏览器直接打开一个URL的时候,默认使用utf-8编码,URL里的中文也会进行编码。
不过也要看情况,比如你的浏览器修改了默认设置为gbk编码,或者你的html里指定gbk编码,或者response里的content-type头设置了gbk,这时候浏览器就会使用gbk编码来解析服务器响应的内容了。

本回答被提问者采纳
参考技术B struts做页面效果的。spring做业务逻辑的。hibernate做数据持久层的。jsp页面请求提交给struts的action类的方法,在action方法中调用spring的业务代码,spring代码将处理后的数据持久层存到数据库。 参考技术C java是编程语言里比较难学的一门,如果有心从事编程方向的工作,最好到专业机构多实践,更贴近市场,这样更有利于将来的发展。

eclipse 打开Android SDK Manager 是报这个错误 [SDK Manager] 系统找不到指定的路径。 不知道啥原因

系统找不到指定路径原因为:目录路径过长,WINDOWS无法识别太长的目录。因为这个目录上级目录已经是WINDOWS的临时缓存目录,然后是压缩包的一个缓存目录里又包含下一个压缩包的缓存目录,路径太长,从而使WINDOWS无法识别这么长的目录。

解决的具体方法:

方法一:

换个英文用户名登录系统(没有的话可以重建一个新用户),安装在不包含中文等字符的路径下;

方法二:

如果您不想更改当前用户名,依然想用中文名或者日文韩文名,那么可以这么做:

1、找到您存放VirtualBox安装文件的文件夹,手动解压,假设您下载了

VirtualBox的安装程序是 F:\\Downloads\\VirtualBox-4.0.6-71416-Win.exe,在开始菜单的搜索框中输入“cmd ” ,运行,打开命令提示行,然后输入:F:\\Downloads\\VirtualBox-4.0.6-71416-Win.exe -extract

2、文件将被自动解压到以下位置:

C:\\user\\用户名\\AppData\\Local\\Temp\\VirtualBox (注意,XP会解压在我的文档—当前用户的临时文件目录下)。这样,就会看到此文件夹里面有3个文件:common.cab、VirtualBox-4.0.6-71416-MultiArch_amd64.msi(64位系统运行这个进行安装)、VirtualBox-4.0.6-71416-MultiArch_x86.msi(32位系统下运行这个进行安装)。

参考技术A

路径配置好后 点APPLY就可以了

参考技术B 重新配置一下路径,preference->android然后设置android sdk的位置试试追问

这些我都试了,我自认为是android-sdk-windows那个文件夹里的tools文件夹的问题。我把tools的文件夹的版本调低一点就不会出现这个问题。以前开发工具还是好使的,问题是在更新之后才出现的。

追答

那你更新一下sdk,是不是你的adt已经是最新的,但是sdk 里面的结构还是以前的结构,我记得好像从哪个版本之后,结构就 变化了,以前在tools的命令,挪到platform-tools里了

追问

我的ADT版本是21.0.0.v201210310015。sdk也是最近更新的。我做了一个小例子测了一下,编码应该是没有问题的。只是不知道报那个东西是怎么回事!!

追答

要是没错就凑火用吧,或者重装ADT然后制定试试

来自:求助得到的回答
参考技术B 我也遇到过,我的jdk的安装在c盘Program Files下,路径中含有空格,我重新安装jdk之后一切ok,希望可以帮到你 参考技术C 把你的JAVA_HOME的路径加上引号。追问

是这样吗? 这样改问题依旧啊......

追答

对的,我的之前也是这样的,加上引号就OK了~祝你好运

以上是关于java数据迁移,中文路径个别无法打开啥原因,解决办法是啥的主要内容,如果未能解决你的问题,请参考以下文章

如果 Liquibase 因更改集迁移失败而失败,我的 csv 数据有啥问题...原因:java.lang.NullPointerException

原因:java.io.FileNotFoundException:类路径资源[application.properties]无法打开,因为它不存在

linux+nginx ,js无法加载 .是啥原因

打开网页总出现你在脱机状态下无法打开网页是啥原因

我打开网页 每个网页说需要java 导致许多东西打不开 有没有啥办法解决

user canceled authentication request!是啥意思