示例代码:
>>> import json
>>> json_string = json.dumps("??? ????")
>>> print json_string
"\u05d1\u05e8\u05d9 \u05e6\u05e7\u05dc\u05d4"
Run Code Online (Sandbox Code Playgroud)
问题是:它不是人类可读的.我(智能)用户想要使用JSON转储验证甚至编辑文本文件.(我宁愿不使用XML)
有没有办法将对象序列化为utf-8 json字符串(而不是\ uXXXX)?
这没有帮助:
>>> import json
>>> json_string = json.dumps("??? ????")
>>> print json_string
"\u05d1\u05e8\u05d9 \u05e6\u05e7\u05dc\u05d4"
Run Code Online (Sandbox Code Playgroud)
这工作,但如果任何子对象是python-unicode而不是utf-8,它将转储垃圾:
>>> import json
>>> json_string = json.dumps("??? ????")
>>> print json_string
"\u05d1\u05e8\u05d9 \u05e6\u05e7\u05dc\u05d4"
Run Code Online (Sandbox Code Playgroud) 什么是Unicode的基础以及为什么需要UTF-8或UTF-16?我在Google上研究了这个并在这里搜索过,但我不清楚.
在VSS进行文件比较时,有时会有消息说这两个文件有不同的UTF.为什么会这样呢?
请简单解释一下.
我需要在我的Java webapp(servlets + JSP,没有使用框架)中使用UTF-8来支持äöå常规芬兰语文本和???特殊情况下的西里尔字母.
我的设置如下:
使用的数据库:MySQL 5.x.
用户主要使用Firefox2,但Opera 9.x,FF3,IE7和谷歌Chrome也用于访问该网站.
怎么做到这一点?
如何以编程方式正确设置JVM(1.5.x)使用的默认字符编码?
我已经读过-Dfile.encoding=whatever以前用于旧JVM的方法......由于我不会进入的原因,我没有那么奢侈.
我试过了:
System.setProperty("file.encoding", "UTF-8");
Run Code Online (Sandbox Code Playgroud)
并且属性已设置,但它似乎不会导致下面的最终getBytes调用使用UTF8:
System.setProperty("file.encoding", "UTF-8");
byte inbytes[] = new byte[1024];
FileInputStream fis = new FileInputStream("response.txt");
fis.read(inbytes);
FileOutputStream fos = new FileOutputStream("response-2.txt");
String in = new String(inbytes, "UTF8");
fos.write(in.getBytes());
Run Code Online (Sandbox Code Playgroud) 我在理解文本读取和写入文件时遇到了一些大脑失败(Python 2.4).
# The string, which has an a-acute in it.
ss = u'Capit\xe1n'
ss8 = ss.encode('utf8')
repr(ss), repr(ss8)
Run Code Online (Sandbox Code Playgroud)
("u'Capit\xe1n'","'Capit\xc3\xa1n'")
print ss, ss8
print >> open('f1','w'), ss8
>>> file('f1').read()
'Capit\xc3\xa1n\n'
Run Code Online (Sandbox Code Playgroud)
所以我输入Capit\xc3\xa1n我最喜欢的编辑器,在文件f2中.
然后:
>>> open('f1').read()
'Capit\xc3\xa1n\n'
>>> open('f2').read()
'Capit\\xc3\\xa1n\n'
>>> open('f1').read().decode('utf8')
u'Capit\xe1n\n'
>>> open('f2').read().decode('utf8')
u'Capit\\xc3\\xa1n\n'
Run Code Online (Sandbox Code Playgroud)
我在这里不理解什么?显然,我缺少一些重要的魔法(或者很有道理).在文本文件中键入什么来获得正确的转换?
我真正没有想到的是,UTF-8表示的重点是,如果你真的不能让Python识别它,那么它来自外部.也许我应该只是JSON转储字符串,并使用它,因为它有一个asciiable表示!更重要的是,当从文件进入时,Python会识别和解码这个Unicode对象的ASCII表示吗?如果是这样,我怎么得到它?
>>> print simplejson.dumps(ss)
'"Capit\u00e1n"'
>>> print >> file('f3','w'), simplejson.dumps(ss)
>>> simplejson.load(open('f3'))
u'Capit\xe1n'
Run Code Online (Sandbox Code Playgroud) MySQL中utf8mb4和utf8charsets有什么区别?
我已经知道ASCII,UTF-8,UTF-16和UTF-32编码; 但我很想知道utf8mb4编码组与MySQL服务器中定义的其他编码类型的区别.
是否有任何特殊利益/建议使用utf8mb4而不是utf8?
我正在从各种RSS源中读出大量文本并将它们插入到我的数据库中.
当然,在馈送中使用了几种不同的字符编码,例如UTF-8和ISO-8859-1.
不幸的是,有时文本的编码存在问题.例:
"Fußball"中的"ß"应该在我的数据库中看起来像这样:"Ÿ".如果是"Ÿ",则会正确显示.
有时,"Fußball"中的"ß"在我的数据库中看起来像这样:"ß".当然,它显示错误.
在其他情况下,"ß"保存为"ß" - 所以没有任何改变.然后它也显示错误.
我该怎么做才能避免案例2和3?
如何使所有内容编码相同,最好是UTF-8?我utf8_encode()什么时候必须使用,什么时候必须使用utf8_decode()(很清楚效果是什么,但什么时候必须使用这些功能?)什么时候我必须对输入什么都不做?
你能帮助我并告诉我如何使一切编码相同吗?也许有功能mb_detect_encoding()?我能为此写一个函数吗?所以我的问题是:
像这样的功能会起作用吗?
function correct_encoding($text) {
$current_encoding = mb_detect_encoding($text, 'auto');
$text = iconv($current_encoding, 'UTF-8', $text);
return $text;
}
Run Code Online (Sandbox Code Playgroud)
我已经测试了它,但它不起作用.它出什么问题了?
我试图找出我应该用于各种类型数据的排序规则.我将存储的100%内容是用户提交的.
我的理解是我应该使用UTF-8通用CI(Case-Insensitive)而不是UTF-8 Binary.但是,我无法找到UTF-8 General CI和UTF-8 Unicode CI之间的区别.
我在Python中需要做些什么来确定字符串的编码方式?