【问题标题】:Entering special characters in database在数据库中输入特殊字符
【发布时间】:2013-02-17 18:36:29
【问题描述】:

我正在扫描我的系统并使用 python 将文件名输入到 sqlite3 数据库中。

其中一个文件的名称中恰好有一个特殊字符,并且在插入记录时会产生错误。这是文件名。

 a¿.mp3

这是查询

self.cursor.execute("INSERT INTO TRACKS VALUES (?)", i)

同样由于特殊字符,我无法将其编码为 utf-8。

我可以使用其他编码将这些数据添加到数据库中吗?

【问题讨论】:

    标签: python sqlite special-characters


    【解决方案1】:

    您可以尝试 utf-16 编码,或在特殊字符周围添加 ''。

    【讨论】:

    • utf 16 能否成功编码其他数据?还是我必须继续检查数据类型并进行相应编码?
    • 我没有测试过,但假设它会起作用,只要你稍后也以 utf-16 格式打开它。
    • 这是我的源 dbInput = [(unicode(i,'utf-16'), ) for i in matches] 虽然有些是常规输入,有些是特殊字符,但我收到错误为 UnicodeDecodeError : 'utf16' 编解码器无法解码位置 82 中的字节 0x33:常规输入的截断数据。
    • 也许你需要过滤它们
    【解决方案2】:

    您是否为此使用os.walk?如果这样做,则不要将目录名称作为裸字符串传递,而是作为 unicode 对象传递,例如 os.walk(u'/some/path') 以获取 unicode 中的所有文件。然后您可以使用filename.encode('utf-8') 将它们编码为 utf-8(如果 utf-8 不够,则为 utf-16)。

    【讨论】:

      猜你喜欢
      • 2016-02-18
      • 1970-01-01
      • 2011-05-09
      • 2015-07-08
      • 1970-01-01
      • 1970-01-01
      • 2016-07-20
      • 2012-03-24
      • 2016-12-27
      相关资源
      最近更新 更多