Python 将应用程序切换到Unicode

Python 将应用程序切换到Unicode,python,django,python-2.7,unicode,django-models,Python,Django,Python 2.7,Unicode,Django Models,My model.py看起来像: import csv with open("organizationTest.txt","rU") as f: reader = csv.reader(f) for row in reader: _, created = Company.objects.get_or_create( Name=row[0], Site=row[1],

My model.py看起来像:

import csv

with open("organizationTest.txt","rU") as f:
        reader = csv.reader(f)
        for row in reader:
            _, created = Company.objects.get_or_create(
                Name=row[0],
                Site=row[1],
                )
模型中描述了“名称”和“站点”

每当我尝试运行我的服务器时,我都会

django.db.utils.ProgrammingError:除非使用可以解释8位ByTestRing的文本工厂(如text\u factory=str),否则不能使用8位ByTestRing。强烈建议您将应用程序切换到Unicode字符串

我怎样才能将我的应用程序切换到上面提到的Unicode字符串,或者如果有其他方法来解决这个问题,我很想知道

我很乐意回答任何问题!提前谢谢你

编辑:以下是全部错误:

回溯(最近一次呼叫最后一次): 文件“manage.py”,第10行,在 从命令行(sys.argv)执行命令 文件“/Library/Frameworks/Python.framework/Versions/2.7/lib/python2.7/site packages/django/core/management/init.py”,第338行,从命令行执行 utility.execute() 文件“/Library/Frameworks/Python.framework/Versions/2.7/lib/python2.7/site packages/django/core/management/init.py”,第312行,在execute中 django.setup() 文件“/Library/Frameworks/Python.framework/Versions/2.7/lib/python2.7/site packages/django/init.py”,第18行,在安装程序中 应用程序。填充(设置。已安装的应用程序) 文件“/Library/Frameworks/Python.framework/Versions/2.7/lib/python2.7/site packages/django/apps/registry.py”,第108行,填充 app_config.import_models(所有_models) 文件“/Library/Frameworks/Python.framework/Versions/2.7/lib/python2.7/site packages/django/apps/config.py”,第198行,在import_模型中 self.models\u module=导入模块(models\u module\u name) 文件“/Library/Frameworks/Python.framework/Versions/2.7/lib/python2.7/importlib/init.py”,第37行,在导入模块中 导入(名称) 文件“/Users/aghodsib/Desktop/soroush_programming/Python/slik/companys/models.py”,第58行,在 description=第[15]行, 文件“/Library/Frameworks/Python.framework/Versions/2.7/lib/python2.7/site packages/django/db/models/manager.py”,第127行,在manager_方法中 返回getattr(self.get_queryset(),name)(*args,**kwargs) 文件“/Library/Frameworks/Python.framework/Versions/2.7/lib/python2.7/site packages/django/db/models/query.py”,第405行,在get_或_create中 返回self.get(**查找),False get中的文件“/Library/Frameworks/Python.framework/Versions/2.7/lib/python2.7/site packages/django/db/models/query.py”,第328行 num=len(克隆) 文件“/Library/Frameworks/Python.framework/Versions/2.7/lib/python2.7/site packages/django/db/models/query.py”,第144行,在len self._fetch_all() 文件“/Library/Frameworks/Python.framework/Versions/2.7/lib/python2.7/site packages/django/db/models/query.py”,第965行,全部 self.\u result\u cache=list(self.iterator()) 迭代器中的文件“/Library/Frameworks/Python.framework/Versions/2.7/lib/python2.7/site packages/django/db/models/query.py”,第238行 结果=编译器。执行_sql() 文件“/Library/Frameworks/Python.framework/Versions/2.7/lib/python2.7/site packages/django/db/models/sql/compiler.py”,第837行,在execute_sql中 cursor.execute(sql,params) 文件“/Library/Frameworks/Python.framework/Versions/2.7/lib/python2.7/site packages/django/db/backends/utils.py”,执行中第79行 返回super(CursorDebugWrapper,self).execute(sql,params) 文件“/Library/Frameworks/Python.framework/Versions/2.7/lib/python2.7/site packages/django/db/backends/utils.py”,执行中的第64行 返回self.cursor.execute(sql,params) 文件“/Library/Frameworks/Python.framework/Versions/2.7/lib/python2.7/site packages/django/db/utils.py”,第97行,在退出 6.重新播放(dj_exc_类型、dj_exc_值、回溯) 文件“/Library/Frameworks/Python.framework/Versions/2.7/lib/python2.7/site packages/django/db/backends/utils.py”,执行中的第64行 返回self.cursor.execute(sql,params) 文件“/Library/Frameworks/Python.framework/Versions/2.7/lib/python2.7/site packages/django/db/backends/sqlite3/base.py”,执行中第318行 返回Database.Cursor.execute(self、query、params) django.db.utils.ProgrammingError:除非使用可以解释8位ByTestRing的文本工厂(如text\u factory=str),否则不能使用8位ByTestRing。强烈建议您将应用程序切换到Unicode字符串

试试这个:

import csv

with open("organizationTest.txt","rU") as f:
        reader = csv.reader(f)
        for row in reader:
            _, created = Company.objects.get_or_create(
                Name=unicode(row[0]),
                Site=unicode(row[1]),
                )
试试这个:

import csv

with open("organizationTest.txt","rU") as f:
        reader = csv.reader(f)
        for row in reader:
            _, created = Company.objects.get_or_create(
                Name=unicode(row[0]),
                Site=unicode(row[1]),
                )
从:

csv模块不直接支持读取和写入Unicode, 但它是8位干净的,除了ASCII NUL的一些问题 人物。因此,您可以编写函数或类来处理 只要您避免像这样的编码,就可以为您进行编码和解码 使用NUL的UTF-16。建议使用UTF-8

下面的unicode_csv_reader()是一个生成器,它将csv.reader包装到 处理Unicode CSV数据(Unicode字符串列表)

从:

csv模块不直接支持读取和写入Unicode, 但它是8位干净的,除了ASCII NUL的一些问题 人物。因此,您可以编写函数或类来处理 只要您避免像这样的编码,就可以为您进行编码和解码 使用NUL的UTF-16。建议使用UTF-8

下面的unicode_csv_reader()是一个生成器,它将csv.reader包装到 处理Unicode CSV数据(Unicode字符串列表)


您似乎从一个不寻常的编解码器中获取字符。
csv文件的源应该能够告诉您他们在使用什么。
但是,您可以从一个编解码器切换到另一个编解码器,如下所示:

import csv

with open("organizationTest.txt","rU") as f:
        reader = csv.reader(f)
        for row in reader:
            _, created = Company.objects.get_or_create(
                Name=row[0].decode('latin-1').encode('utf8'),
                Site=row[1].decode('latin-1').encode('utf8'),
                )

我建议你试试看。如果仍然无法使用,请联系csv文件的创建者。

您似乎从一个不寻常的编解码器中获取字符。
csv文件的源应该能够告诉您它们在使用什么