MySQL中utf8mb4和utf8charsets有什么区别?
我已经知道ASCII,UTF-8,UTF-16和UTF-32编码; 但我很想知道utf8mb4编码组与MySQL服务器中定义的其他编码类型的区别.
是否有任何特殊利益/建议使用utf8mb4而不是utf8?
为什么这不起作用的任何想法?我真的认为'忽略'会做正确的事.
>>> 'add \x93Monitoring\x93 to list '.encode('latin-1','ignore')
Traceback (most recent call last):
File "<interactive input>", line 1, in ?
UnicodeDecodeError: 'ascii' codec can't decode byte 0x93 in position 4: ordinal not in range(128)
Run Code Online (Sandbox Code Playgroud) 我正处于一个我调用api的场景,并根据api的结果我为api中的每条记录调用数据库.我的api调用返回字符串,当我通过api为数据库调用返回的项时,对于某些元素,我得到以下错误.
Traceback (most recent call last):
File "TopLevelCategories.py", line 267, in <module>
cursor.execute(categoryQuery, {'title': startCategory});
File "/opt/ts/python/2.7/lib/python2.7/site-packages/MySQLdb/cursors.py", line 158, in execute
query = query % db.literal(args)
File "/opt/ts/python/2.7/lib/python2.7/site-packages/MySQLdb/connections.py", line 265, in literal
return self.escape(o, self.encoders)
File "/opt/ts/python/2.7/lib/python2.7/site-packages/MySQLdb/connections.py", line 203, in unicode_literal
return db.literal(u.encode(unicode_literal.charset))
UnicodeEncodeError: 'latin-1' codec can't encode character u'\u2013' in position 3: ordinal not in range(256)
Run Code Online (Sandbox Code Playgroud)
上面错误引用的代码段是:
...
for startCategory in value[0]:
categoryResults = []
try:
categoryRow = ""
baseCategoryTree[startCategory] = []
#print categoryQuery % {'title': startCategory};
cursor.execute(categoryQuery, {'title': …Run Code Online (Sandbox Code Playgroud) Unicode使用 python 写入 .pdf时,我遇到了变量内容问题。
它输出这个错误:
UnicodeEncodeError: 'latin-1' codec can't encode character '\u2013'
Run Code Online (Sandbox Code Playgroud)
基本上是什么被抓住了。
我曾尝试采用该变量,其中内容有一个“破折号”并用“ .encode('utf-8')”重新定义它,例如,如下所示:
Body = msg.Body
BodyC = Body.encode('utf-8')
Run Code Online (Sandbox Code Playgroud)
现在我收到以下错误:
Traceback (most recent call last):
File "script.py", line 37, in <module>
pdf.cell(200, 10, txt="Bod: " + BodyC, ln=4, align="C")
TypeError: can only concatenate str (not "bytes") to str
Run Code Online (Sandbox Code Playgroud)
下面是我的完整代码,我怎么能简单地修复 ' Body' 变量内容中的Unicode 错误。
转换为utf-8or western, ' latin-1'之外的任何内容。有什么建议?
完整代码:
from fpdf import FPDF
import win32com.client
outlook = win32com.client.Dispatch("Outlook.Application").GetNamespace("MAPI")
msg = outlook.OpenSharedItem(r"C:\User\language\python\Msg-To-PDF\test_msg.msg") …Run Code Online (Sandbox Code Playgroud) 我收到此错误:
File "run.py", line 37, in <module>
print str1
UnicodeEncodeError: 'latin-1' codec can't encode characters in position 24-29: ordinal not in range(256)
Run Code Online (Sandbox Code Playgroud)
尝试简单地打印一些日语文本时。实际上,字符串看起来像这样:
\u5149\u66dc\u65e5\u3067\u30e9\u30c6\u30d4\u30af\u30b7\u30fc\u4e71\u7372\u884c\u304d\u307e\u3059\u60d\u65ec\u3059\u60ec\u65ec\u3059\u60ec\u65ec\u65ec6\u50c\u60d305c \uff3e
它来自一个 JSON 文件。我怎样才能打印这个?
代码:
url = "http://www.blah.com/json"
try:
result = simplejson.load(urllib2.urlopen(url))
except IOError:
print "Cannot open URL"
data = "error"
for msg in result["msg"]:
str1 = msg["character"] + " : " + msg["message"]
print str1
Run Code Online (Sandbox Code Playgroud)
repr(str1) 是
u'Anys : \u5149\u66dc\u65e5\u3067\u30e9\u30c6 \u30d4\u30af\u30b7\u30fc\u4e71\u7372\u884c\u304d\u307e\u3059 \u5e0c\u671b\u8005\u52df\u96c6\u4e2d\u3067\u3059\uff3e\uff3e'
Run Code Online (Sandbox Code Playgroud)
打印(sys.stdout.encoding)是
ISO-8859-1
Run Code Online (Sandbox Code Playgroud)