Mac Chrome和Mac Safari生成不同的Unicode



我正在做一个遗留项目,我们将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)

最新更新