我想解决的问题是: 我们的应用程序的用户是来自Windows等相关文档的复制/粘贴字符,例如Word,我们的应用程序无法识别单引号和双引号或项目符号。
这是我到目前为止将这些数据转换为UTF格式所采取的步骤:
在servers.xml内,在Connector标签中,我添加了属性URIEncoding =“UTF-8”。
在负责存储输入的bean中,我创建了一个byte []并传入String并保存inputNote文本,然后将其转换为UTF-8。然后将UTF-8转换后的String传递回inputNoteText String。请直接在下面查看有关此内容的简明代码。
byte[] bytesInUTF8inputNoteText = inputNoteText.getBytes("UTF-8");
inputNoteText = new String(bytesInUTF8inputNoteText, "UTF-8");
this.var = inputNoteText;
在变量设置器中负责保存db查询的结果: setNoteText(noteText)将来自数据库查询的注释数据转换为UTF8格式的字节,然后将其转换回String并将其设置为String noteText属性。还在下面。
public void setNoteText(String noteText) throws UnsupportedEncodingException {
byte[] bytesInUTF8inputNoteText = noteText.getBytes("UTF-8");
String noteTextUTF8 = new String(bytesInUTF8inputNoteText, "UTF-8");
this.noteText = noteTextUTF8;}
在SQL Server中,我将数据类型从text更改为nvarchar(MAX),以便以Unicode格式存储数据,即使这是一种不同类型的Unicode。
当我从MS Word文档复制/粘贴到我们的JSF输入文本框中时看到的内容:
在Eclipse中,如果我在bean中的属性上设置监视,一旦该String属性中的数据转换为UTF-8,所有字符都是UTF-8格式。当我发布到SQL Server时,以nvarchar(max)数据类型保存的数据字符串正确显示UTF-8格式的所有字符。然后当返回resultSet并使用从db查询返回的String填充hold属性时,它还显示所有格式正确的UTF-8格式....但是,......介于正确的字符串值之间的某个位置坐在绑定到JSF页面和JSF页面的属性中,1.2顺便说一下,该值未被格式化,因此我看到问号,我应该看到单/双引号和项目符号。我希望有人之前遇到过这类问题,并且可以解释我需要做些什么来解决这个问题。看起来有点像JSF错误,提前感谢您的输入!!
答案 0 :(得分:0)
试试这个
String noteText = new String (noteText.getBytes ("iso-8859-1"), "UTF-8");
答案 1 :(得分:0)
从Windows文档复制粘贴时,编码格式不是UTF-8,而是[Windows-1252](http://en.wikipedia.org/wiki/Windows-1252)。请注意以粗绿色边框标记的单元格。这些字符DONT映射到UTF-8字符集,因此您必须在阅读时使用Windows-1252编码。