1

我在尝试将 word 或 Outlook 中的内容复制粘贴到 JSF textarea 时遇到一个问题。我在查看特定的 aphostrohe(') 时遇到问题。其他一些符号正在被替换。我在应用程序级别有 ISO-8859-1 的字符编码。我在文本区域所在的特定页面中包含了以下代码。符号仍然在那里。

我尝试添加以下编码以从 bean 级别对其进行编码。此代码进行编码,我可以在文本中看到撇号(')。但是如果我插入相同的文本,其他一些符号就会被插入到数据库中。在hibernate中有什么需要改变的吗?

新字符串(text.getBytes(“ISO-8859-1”),“UTF-8”)。

请分享解决此问题的任何解决方案。

4

2 回答 2

3

我在应用程序级别有 ISO-8859-1 的字符编码。

有你的问题。ISO-8859-1 未涵盖的任何字符都无法更改为 ISO-8859-1 涵盖的字符。至于您带引号的特殊情况,在维基百科中您可以找到所有引号字符的列表。U+00FFISO-8859-1 不涵盖超出范围的那些。Outlook、Word 等 Microsoft 应用程序使用范围内的“弯引号”,因此在使用 ISO-8859-1 编码时U+2xxx会显示为Mojibake 。

ISO-8859-1 是史前时期的一种相当劣质的字符编码,仅支持 255 个字符,绝对没有为统治世界做好准备。世界知道的字符比 ISO-8859-1 所能涵盖的要多得多您应该使用基于 Unicode 的字符编码,例如 UTF-8。Unicode 定义并支持超过 100 万个字符

您应该更改您的应用程序以使用 UTF-8 而不是 ISO-8859-1。请注意,JSF 2.x 默认已经支持并使用 UTF-8。因此,您的具体问题表明您正在使用 JSF 1.x,或者您已经手动更改了它。您不应该这样做并将所有内容都设置为 UTF-8,包括数据库表。可以在此博客中找到一些有用的提示:Unicode - 如何正确使用字符?

于 2013-03-15T13:59:29.883 回答
0

您需要在服务器端转换为 UNICODE,例如,如果您使用 glassfish 将参数编码 default-charset="UTF-8" 条目添加到 glassfish-web.xml。为我工作。

<parameter-encoding default-charset="UTF-8" />

于 2016-06-08T07:58:40.503 回答