java在春季上传阿拉伯文文件时,文件名以XML实体而不是阿拉伯文符号结束
我使用Spring upload上传文件。当上传一个阿拉伯语文件并在控制器中获取原始文件名时,我会得到如下结果:
المغفلين.png
我希望是:
المغفلين.png
你知道为什么会出现这个问题吗
你可以在下面搜索框中键入要查询的问题!
我使用Spring upload上传文件。当上传一个阿拉伯语文件并在控制器中获取原始文件名时,我会得到如下结果:
المغفلين.png
我希望是:
المغفلين.png
你知道为什么会出现这个问题吗
# 1 楼答案
这种编码没有错。它的意思和你给它起的名字完全一样
根据XML standard字符引用可以采用
#&n;
的形式,其中n
是十进制([0-9]+
)或十六进制(x[0-9a-fA-F]+
)数,表示所表示字符的Unicode码点。因此,问题中的文件名是有效的XML在您的例子中,第一个字符
ا
(相当于ا
)表示带有十进制代码点1575的Unicode符号,通常用十六进制表示为U+0627。该代码点被描述为阿拉伯语字母“alef”这些符号是从左到右编码的,即使它是正在编码的阿拉伯语(从右到左)符号,所以“alef”位于ASCII文件名的左侧。由渲染引擎(不管是什么)将字符串渲染为RTL
我的Java经验非常有限,所以不幸的是,我不能向您指出一个内置或Spring特性来帮助您处理这个问题,但似乎您的XML没有正确解码(如果我不得不猜测的话)
# 2 楼答案
很可能是Spring将Unicode字符(至少是非ISO-8859-1字符)转换为XML实体。这种行为必须可以在Spring设置中的某个地方进行配置(或者您实际上与Spring结合使用的基于web的MVC框架中的那些设置,但没有提到)。因为我不做Spring,所以无法详细介绍如何配置它
但是如果您不能永远计算它,那么您可以考虑使用Apache Commons Lang^{} 手动地将XML实体解脱成真正的阿拉伯字形。