字符串在UTF8中无效,即使在键入时也是如此

时间:2016-04-17 19:27:15

标签: utf-8

我目前正在尝试使用java将许多小文件中的文本放在一个大文件中。这个大文件在python模块中进一步用于从中提取短语。在此过程中,我收到一个错误,指示无效的utf8文本。一些研究将我带到this error in java,但它没有解决我的问题。

奇怪的是,当我在类似this one的utf8的在线转换器中输入句子时,它也说错了。我使用的字符串是“Brawlers Were Back on Ice and Canvas”。

任何人都可以向我解释为什么会这样吗?

提前致谢!

修改/更新 看起来这个在线工具可能有一个bug。我还在修复python中使用该文件的问题,所以我将展示创建它的代码:

     Writer writer = new BufferedWriter(new OutputStreamWriter(
                  new FileOutputStream("samplefile"), "utf-8"))) {
     writer.write(someText);

但这会在python中产生错误,如

UnicodeDecodeError: 'utf8' codec can't decode byte 0xc3 in position 0: unexpected end of data 

SecondEdit : 用于处理数据的python代码:

dr = DirRunner(self.dir)
    for item in dr:
        #open for reading using a buffer
        file = open(item, "r", 1);
        for line in file.readlines():
            yield line

DirRunner只返回一个目录中所有文件和文件夹的列表。

然后在此函数中处理每一行:

def any2utf8(input):
"""
 convert a string or object into utf8 encoding
 source: http://stackoverflow.com/questions/13101653/python-convert-complex-dictionary-of-strings-from-unicode-to-ascii
 usage: 
    str = "abc"
    str_replace = any2utf8(str)
"""
if isinstance(input, dict):
    return {any2utf8(key): any2utf8(value) for key, value in input.iteritems()}
elif isinstance(input, list):
    return [any2utf8(element) for element in input]
elif isinstance(input, unicode):
    return input.encode('utf-8')
else:
    return input

0 个答案:

没有答案