Confluence 6 € 欧元字符集不能正常显示

€ (euro) 标记 是一个 3 字节字符,在 (UTF-8)中这个字符被表示为 0xE2, 0x82, 0xAC。html

有时候,你的系统中没有设置全部的地方为相同的字符集的时候(Confluence,服务器和数据库都应该是相同的字符集),你可能会遇到一些字符不能显示的问题。数据库

...
I write a page with a Euro sign in it (€). All is well, the Euro sign shows up in the wiki markup text-box, and the preview, and the display of the saved page.
One day later, the Euro sign has changed into a question mark upside down!
...
What is going on? Why does the Euro sign mysteriously change? How do I prevent it?缓存

有趣的是,这个字符集在测试的时候是没有问题的,Confluence 和数据库都可以没有问题的完整识别这个字符。服务器

致使这个问题的多是有以下 2 个缘由:ide

数据库和 Confluence 使用的是 utf-8 编码,可是链接不是。

当数据在应用程序和数据库之间进行传递的时候,若是使用的不是 utf-8 编码,有可能会致使字符不能被识别。你能够在你的链接中指定使用 utf-8 编码,你这个问题将会自动被解决,请注意修改数据库链接后,已经存在的数据不会被修改,你可能须要找到有乱码的地方自行进行修改。测试

数据库没有使用 utf-8,可是 Confluence 和链接使用的是。

若是你的数据库编码没有使用 UTF-8 编码,例如你可能使用的是 latin1 编码,那么有可能在你存储 "€" 字符的时候导出存储错误。这个有多是由于 缓存(caching) 致使的。 当 Confluence 将数据库存储到数据库的时候,Confluence 有可能还保留了一个本地的缓存拷贝。若是数据库的字符集没有被正确的设置,欧元的标记可能不能在数据库中正确存储,可是 Confluence 有可能会持续使用缓存的数据(这个数据有正确的编码)。这个错误只能在缓存被删除后才能察觉到,由于不正确的字符编码已经存储到数据库中了。编码

针对存储使用 latin1 编码的字符集,全部 2 字节的 UTF-8 编码字符都应该可以正确显示,在存储欧元标记的时候,数据库中的存储数据将会显示为 '?' 。Confluence 的字符编码被设置为 UTF-8 编码,那么 2 字节的 UTF-8 编码,在数据库中存储的使用的 latin1 字符集,那么数据库也会使用的是 2 字节的字符集而不会使用 UTF-8 字符集。这样 3 本身的字符集,例如欧元就不能正确存储了。.net

请肯定你按照你系统的建议为你的全部的实体都设置 UTF-8 编码,请参考 Troubleshooting Character Encodings 页面中内容。htm

 

https://www.cwiki.us/pages/viewpage.action?pageId=37487808utf-8

相关文章
相关标签/搜索