can't encode characters in position 0-2: ordinal not in range(128)

somepeople 2018-12-06 08:57:39
使用python3.7,WIN 7 企业版32位,SQL2008,代码如下:

# -*- coding: utf-8 -*-
"""
Created on Tue Dec 4 15:37:06 2018

@author: Administrator
"""
import pymssql
conn=pymssql.connect(host='22.139.123.11',user='yyuser',password='pwd',database='营业部',charset="utf8")
currsor=conn.cursor()
print(conn)
currsor.close()
conn.close()

报错如下:
File "src\_mssql.pyx", line 653, in _mssql.MSSQLConnection.__init__

UnicodeEncodeError: 'ascii' codec can't encode characters in position 0-2: ordinal not in range(128)

上述代码文件使用 ue 打开后,显示 u8-DOS
网上查询了几个小时都未找到原因,希望在此得到高人指点。听说要转码,是因为我的数据库名称是“营业部“,但如何转呢?数据库里可是有不少中文名称的 database,与及中文名称的数据表呀
...全文
341 10 打赏 收藏 转发到动态 举报
写回复
用AI写文章
10 条回复
切换为时间正序
请发表友善的回复…
发表回复
somepeople 2018-12-13
  • 打赏
  • 举报
回复
不好意思,顶起来,请问大家的 sql server(2008),被Python 3.7 调用时,Database数据库都是英文名称吗?中文名称咋办呢?
somepeople 2018-12-10
  • 打赏
  • 举报
回复
我版本已经是3.7了,解决不了呀 @码仔1号
somepeople 2018-12-10
  • 打赏
  • 举报
回复
找到python安装目录下Lib目录,site.py文件,找到setencoding函数 if 0: # Enable to support locale aware default string encodings. 修改"if 0"为"if 1"就可以了 找不到这个 setencoding
somepeople 2018-12-10
  • 打赏
  • 举报
回复
引用 8 楼 码仔1号 的回复:
引用 7 楼 somepeople 的回复:
我版本已经是3.7了,解决不了呀 @码仔1号
我说的是 pymysql 连接模块的版本 用 pip 升级下
pymssql‑2.1.4‑cp37‑cp37m‑win32.whl 我安装的是这个哦,也是最新的了
码仔1号 2018-12-10
  • 打赏
  • 举报
回复
引用 7 楼 somepeople 的回复:
我版本已经是3.7了,解决不了呀 @码仔1号
我说的是 pymysql 连接模块的版本 用 pip 升级下
码仔1号 2018-12-09
  • 打赏
  • 举报
回复
把你pymysql升级到最新版本,没有这个字符问题
陈年椰子 2018-12-08
  • 打赏
  • 举报
回复
https://www.jianshu.com/p/cd7f7fd87620

试过这个方法吗?
陈年椰子 2018-12-08
  • 打赏
  • 举报
回复
为啥str 变成 bytes了? 有些怪 。 前面不是字符串吗?
somepeople 2018-12-07
  • 打赏
  • 举报
回复
引用 1 楼 陈年椰子 的回复:
database='营业部'.encode("utf8")
这样试试。

试了,不行哦,提示如图
陈年椰子 2018-12-06
  • 打赏
  • 举报
回复
database='营业部'.encode("utf8")
这样试试。

37,720

社区成员

发帖
与我相关
我的任务
社区描述
JavaScript,VBScript,AngleScript,ActionScript,Shell,Perl,Ruby,Lua,Tcl,Scala,MaxScript 等脚本语言交流。
社区管理员
  • 脚本语言(Perl/Python)社区
  • IT.BOB
加入社区
  • 近7日
  • 近30日
  • 至今

试试用AI创作助手写篇文章吧