在Java中读取UTF-8编码只会导致某些地方出现问题

时间:2015-04-24 01:10:30

标签: utf-8 character-encoding spring-batch

我正在Java Spring Batch中逐字节地读取UTF_8编码的文件并将内容保存在mongodb中。读取被委托给FlatFileItemReader,编码以UTF-8的形式注入到bean中。

我所看到的是,只有在一个或两个特定的地方,变音字符才会被存储在mongodb中的编码问题。我确认原始文件中的内容没问题。有趣的是,在其他任何地方,原始文件中的变音符号都被正确解释并正确存储在mongodb中。

你能帮忙吗?

~/test.txt

FieldSetMapper

<bean id="recordReader" class="org.springframework.batch.item.file.FlatFileItemReader" scope="step">
    <property name="resource" value="file:#{jobExecutionContext['inputfile']}" />
    <property name="linesToSkip" value = "1" />
    <property name= "encoding" value ="UTF-8"/>
    <property name="lineMapper">
        <bean class="org.springframework.batch.item.file.mapping.DefaultLineMapper" >
            <property name = "lineTokenizer">
            <bean class = "com.xyz.NoQuoteDelimitedLineTokenizer">
                <property name = "strict" value = "false" />
                <property name = "names" value = "Col1,Col2,Col3,Col4,Col5,Col6,Col7,Col8" />
                    <property name="delimiter">
                        <util:constant static-field="org.springframework.batch.item.file.transform.DelimitedLineTokenizer.DELIMITER_TAB" />
                    </property>                     
            </bean>
            </property>
            <property name = "fieldSetMapper">
                <bean class = "com.xyz.MyFieldSetMapper" >      
                    <property name = "ctx" value="#{jobExecutionContext['contextBean']}"/>
                </bean>         
            </property>

        </bean>
    </property>
</bean>

0 个答案:

没有答案