Java 使用utf-8从文件中读取XML

Java 使用utf-8从文件中读取XML,java,xml,spring,utf-8,anypoint-studio,Java,Xml,Spring,Utf 8,Anypoint Studio,我有一个带有Springbean的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.Fi

我有一个带有Springbean的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>
它是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>

为字符串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>

这是因为您正在通过调用其构造函数来创建一个
字符串
,该构造函数采用
字节[]
,它将使用系统的默认字符编码(可能不是UTF-8)来解释字节

使用右构造函数
String
指定字符编码。这应该可以工作(我还没有测试):


这是因为您正在通过调用其构造函数来创建一个
字符串,该构造函数接受一个
字节[]
,该构造函数将使用系统的默认字符编码(可能不是UTF-8)来解释字节

使用右构造函数
String
指定字符编码。这应该可以工作(我还没有测试):



谢谢你的回答和很好的解释,它成功了!谢谢你的回答和很好的解释,它成功了!
new String(byte_array, "UTF-8")
<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>