当文本包含多种语言(如下所示)时,带有blob转换blob的JPA本机查询会导致问号。 "描述" :" ??????"
尝试编码如下。但仍然是同样的问题。 String xmlFile = new String(xmlBytesArray," UTF-8");
任何帮助将不胜感激。
答案 0 :(得分:0)
我认为您的默认系统编码不是UTF-8 - 您可以通过设置系统属性来为您的java进程更改此内容:
-Dfile.encoding=UTF-8
另一种可能性是您必须将编码添加到DB-Connection-String中 对于MySQL,这将是
jdbc:mysql://localhost:3306/mydb?characterEncoding=UTF-8
答案 1 :(得分:0)
最后我们发现问题不在于JPA本机查询,而在于JAXB解组。
从查询中读取blob作为字符串后,我们要使用blob中的转换字符串直接解组XML,而不是直接传递字节数组。
以下是问题的解决方法。
public static Object unMarshaller(JAXBContext jc,byte[] byteArr) throws JAXBException{
Unmarshaller u = jc.createUnmarshaller();
ByteArrayInputStream bais = new ByteArrayInputStream(byteArr);
u.setEventHandler(new javax.xml.bind.helpers.DefaultValidationEventHandler());
Source input = new StreamSource(bais);
return u.unmarshal(input);
}