在将句子从任意源复制粘贴到JSF文本框或文本区域时处理特殊字符

在将句子从任意源复制粘贴到JSF文本框或文本区域时处理特殊字符,jsf,character-encoding,copy,paste,Jsf,Character Encoding,Copy,Paste,我在尝试将word或outlook中的内容复制粘贴到JSF文本区域时遇到了一个问题。我在查看特定的aphostrohe(')时遇到问题。其他一些符号正在被取代。我在应用程序级别使用ISO-8859-1字符编码。我在文本区域所在的特定页面中包含了以下代码。符号仍然存在 我尝试添加以下代码,从bean级别对其进行编码。这段代码进行编码,我可以在文本中看到非介形词(')。但是,如果我插入相同的文本,则会在数据库中插入其他符号。在hibernate中是否有任何东西需要更改 新字符串(text.getBy

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

我尝试添加以下代码,从bean级别对其进行编码。这段代码进行编码,我可以在文本中看到非介形词(')。但是,如果我插入相同的文本,则会在数据库中插入其他符号。在hibernate中是否有任何东西需要更改

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

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

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

这是你的问题。ISO-8859-1未涵盖的任何字符都不可能更改为ISO-8859-1涵盖的字符。至于带引号的特殊情况,在维基百科你可以找到一个列表。ISO-8859-1不包括
U+00FF
范围以外的。Outlook、Word等Microsoft应用程序使用的“曲线引号”位于
U+2xxx
范围内,因此在使用ISO-8859-1编码时会显示为曲线引号

ISO-8859-1是来自史前的一种相当低级的字符编码,它支持并且绝对不准备统治世界。全世界知道的字符比ISO-8859-1所能涵盖的要多得多。您应该使用基于Unicode的字符编码,如UTF-8。Unicode定义和支持


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

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