python中加载到DB的不可见unicode字符

python中加载到DB的不可见unicode字符,python,mysql,string,unicode,replace,Python,Mysql,String,Unicode,Replace,有很多问题和解决办法,但似乎没有一个适合我。 我的问题是我正在读取一个带有字符串的文件,并将每一行加载到数据库中 在文件中,它看起来像普通文本,而在DB中,它是作为unicode空间读取的。我试着用一个空格和类似的选项来代替它,但都没有效果 例如,在文本文件中,字符串如下所示: The abrupt departure 插入DB后,它看起来像: The abrupt departure "The abrupt\xc2\xa0departure" 当我尝试在DB中运行数据查询时,它看起来像

有很多问题和解决办法,但似乎没有一个适合我。 我的问题是我正在读取一个带有字符串的文件,并将每一行加载到数据库中

在文件中,它看起来像普通文本,而在DB中,它是作为unicode空间读取的。我试着用一个空格和类似的选项来代替它,但都没有效果

例如,在文本文件中,字符串如下所示:

The abrupt departure
插入DB后,它看起来像:

The abrupt departure
"The abrupt\xc2\xa0departure"
当我尝试在DB中运行数据查询时,它看起来像:

The abrupt departure
"The abrupt\xc2\xa0departure"
我尝试了以下方法:

if "\xc2\xa0"  in str: 
     str.replace('\xa0', ' ')
     str.replace('\xc2', ' ')
     print str
上面的代码正在打印字符串,如下所示:

The abrupt departure
但当插入回DB时,它仍然是一样的

感谢您的帮助。

尝试以下方法:

这将删除
Unicode
字符

>>> s = "The abrupt departure"
>>> s = s.decode('unicode_escape').encode('ascii','ignore')
>>> s
'The abrupt departure'
或者, 您可以尝试替换,就像您尝试过的那样。但您忘记了重新分配给同一个变量

>>> s = "The abrupt departure"
>>> s = s.replace('\xc2', '').replace('\xa0','')
>>> s
'The abrupt departure'
试试这个:

这将删除
Unicode
字符

>>> s = "The abrupt departure"
>>> s = s.decode('unicode_escape').encode('ascii','ignore')
>>> s
'The abrupt departure'
或者, 您可以尝试替换,就像您尝试过的那样。但您忘记了重新分配给同一个变量

>>> s = "The abrupt departure"
>>> s = s.replace('\xc2', '').replace('\xa0','')
>>> s
'The abrupt departure'

关键是字符串是不可变的,您需要从
replace
分配返回值:

 s = s.replace('\xa0', ' ')
 s = s.replace('\xc2', ' ')

另外,不要使用
str
作为变量名。

关键是字符串是不可变的,您需要从
replace
分配返回值:

 s = s.replace('\xa0', ' ')
 s = s.replace('\xc2', ' ')
另外,不要将
str
用作变量名。

C2A0
是一个“不间断空格”
“code>是您在
字符集
设置不一致时看到的内容

做一个
replace()
仅仅是掩盖了问题,当一个不同的有趣角色出现在你的桌子上时,这并没有帮助

由于您没有提供足够的信息来说明您所做的是正确的还是错误的,让我向您指出两个参考:

C2A0
是一个“不间断空间”
“code>是您在
字符集
设置不一致时看到的内容

做一个
replace()
仅仅是掩盖了问题,当一个不同的有趣角色出现在你的桌子上时,这并没有帮助

由于您没有提供足够的信息来说明您所做的是正确的还是错误的,让我向您指出两个参考:


str.replace()
对字符串没有任何作用。
str.replace()
对字符串没有任何作用。这很有效,但我得到的结果就像突然离开一样,中间没有空格。您使用的是哪种python版本?它是2.7,有关系吗?它的读取方式不像“突然离开”,而是这样“突然的\xc2\xA0离开”这很有效,但我得到的结果就像是没有空格的突然的离开。您使用的是哪一个python版本?它是2.7,有关系吗?它的阅读方式不像“突然的离开”,而是像这样的“突然的\xc2\xA0离开”