我正在做一个遗留项目,我们将Java 6与Spring、Grails等一起使用。
我遇到的问题是,我有一个文件上传表单,我们支持支持德语文件名。在这种情况下,我有一个名为something的文件;für";我现在有困难。
我试着把它转换成unicode,看看这是否解决了问题,但我现在可以明白为什么会有问题了。在Mac Chrome上,它产生U+308,而在Mac Safari上,它生成U+00FC,Safari可以正常工作并在MySQL中正确插入,另一个失败。
MySQL的错误:
#1366 - Incorrect string value: 'xCCx88r' for column `name` at row 1
当我尝试运行此代码时:
UPDATE `X` SET `name` = 'für' WHERE `skabelon`.`id` = 1302
为什么会有差异,我该如何修复它,以便在Mac上使用Chrome?Windows和Ubuntu Chrome运行完美。
UPDATE
在规范化字符串后,它现在可以工作了。
我在Java中对它进行规范化后,它就工作了。以前我从来不知道我需要它。
我使用了java.text 中的Normalizer
Normalizer.normalize("String", Normalizer.Form.NFC)