使用 utf-8 从文件读取 XML
Read XML from file with utf-8
我有一个包含 spring bean 的 mule 流,它读取以 utf-8 编码的静态 XML 文件。但是它弄乱了所有非英语字符。
bean定义如下:
<spring:bean id="LoadFile" name="Bean" class="java.lang.String">
<spring:constructor-arg>
<spring:bean id="Test" name="org.springframework.util.FileCopyUtils" class="org.springframework.util.FileCopyUtils" factory-method="copyToByteArray">
<spring:constructor-arg type="java.io.InputStream" value="classpath:Settings.xml"/>
</spring:bean>
</spring:constructor-arg>
</spring:bean>
</spring:beans>
如果我使用自己的代码读取同一个文件,例如:
InputStream in = this.getClass().getClassLoader()
.getResourceAsStream(name);
它是 utf-8 并且有效。如何定义 springbean 以关心编码?
此致
为字符串 bean 添加 UTF-8 字符集构造函数 arg
<spring:bean id="LoadFile" name="Bean" class="java.lang.String">
<spring:constructor-arg index="0">
<spring:bean id="Test" name="org.springframework.util.FileCopyUtils" class="org.springframework.util.FileCopyUtils" factory-method="copyToByteArray">
<spring:constructor-arg type="java.io.InputStream" value="classpath:Settings.xml"/>
</spring:bean>
</spring:constructor-arg>
<spring:constructor-arg index="1" value="UTF-8">
</spring:bean>
Java相当于
new String(byte_array, "UTF-8")
这是因为您正在通过调用采用 byte[]
的构造函数来创建 String
,这将使用系统的默认字符编码解释字节,这可能不是 UTF- 8.
指定字符编码,使用String
的右构造函数。这应该有效(我还没有测试过):
<spring:bean id="LoadFile" name="Bean" class="java.lang.String">
<spring:constructor-arg>
<spring:bean id="Test" name="org.springframework.util.FileCopyUtils" class="org.springframework.util.FileCopyUtils" factory-method="copyToByteArray">
<spring:constructor-arg type="java.io.InputStream" value="classpath:Settings.xml"/>
</spring:bean>
</spring:constructor-arg>
<spring:constructor-arg value="UTF-8"/>
</spring:bean>
我有一个包含 spring bean 的 mule 流,它读取以 utf-8 编码的静态 XML 文件。但是它弄乱了所有非英语字符。 bean定义如下:
<spring:bean id="LoadFile" name="Bean" class="java.lang.String">
<spring:constructor-arg>
<spring:bean id="Test" name="org.springframework.util.FileCopyUtils" class="org.springframework.util.FileCopyUtils" factory-method="copyToByteArray">
<spring:constructor-arg type="java.io.InputStream" value="classpath:Settings.xml"/>
</spring:bean>
</spring:constructor-arg>
</spring:bean>
</spring:beans>
如果我使用自己的代码读取同一个文件,例如:
InputStream in = this.getClass().getClassLoader()
.getResourceAsStream(name);
它是 utf-8 并且有效。如何定义 springbean 以关心编码?
此致
为字符串 bean 添加 UTF-8 字符集构造函数 arg
<spring:bean id="LoadFile" name="Bean" class="java.lang.String">
<spring:constructor-arg index="0">
<spring:bean id="Test" name="org.springframework.util.FileCopyUtils" class="org.springframework.util.FileCopyUtils" factory-method="copyToByteArray">
<spring:constructor-arg type="java.io.InputStream" value="classpath:Settings.xml"/>
</spring:bean>
</spring:constructor-arg>
<spring:constructor-arg index="1" value="UTF-8">
</spring:bean>
Java相当于
new String(byte_array, "UTF-8")
这是因为您正在通过调用采用 byte[]
的构造函数来创建 String
,这将使用系统的默认字符编码解释字节,这可能不是 UTF- 8.
指定字符编码,使用String
的右构造函数。这应该有效(我还没有测试过):
<spring:bean id="LoadFile" name="Bean" class="java.lang.String">
<spring:constructor-arg>
<spring:bean id="Test" name="org.springframework.util.FileCopyUtils" class="org.springframework.util.FileCopyUtils" factory-method="copyToByteArray">
<spring:constructor-arg type="java.io.InputStream" value="classpath:Settings.xml"/>
</spring:bean>
</spring:constructor-arg>
<spring:constructor-arg value="UTF-8"/>
</spring:bean>