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