【发布时间】:2017-05-20 13:49:33
【问题描述】:
在 SQL Server 中定义的 XML 类型字段的默认编码是 UTF-16。我可以毫无问题地使用 UTF-16 编码的 XML 流插入该字段。
但如果我尝试使用 UTF-8 编码的 XML 流插入字段,插入尝试会收到错误响应unable to switch encoding。
问题:有没有办法将 SQL Server 列/字段定义为具有 UTF-8 编码?
更多信息使用 Spring JDBCTemplate 执行插入操作。
XML 流由 JAXB Marshaller 生成,设置为 UTF-8 或 UTF-16 编码。
private String marshall(myDAO myTao, JAXBEncoding jaxbEncoding)
throws JAXBException{
JAXBContext jc = JAXBContext.newInstance(ObjectFactory.class);
m = jc.createMarshaller();
m.setProperty(Marshaller.JAXB_FORMATTED_OUTPUT, Boolean.TRUE);
if (jaxbEncoding!=null)
m.setProperty(Marshaller.JAXB_ENCODING, jaxbEncoding.toString());
StringWriter strw = new StringWriter();
m.marshal(myTao, strw);
String strw.toString();
}
在哪里...
public enum JAXBEncoding {
UTF8("UTF-8"),
UTF16("UTF-16")
;
private String value;
private JAXBEncoding(String value){
this.value = value;
}
public String toString(){
return this.value;
}
}
【问题讨论】:
标签: sql-server xml utf-8 character-encoding jaxb