我正在运行一个最新的Linux系统,我所有的语言环境都是UTF-8: LANG=de_DE.UTF-8 LANGUAGE= LC_CTYPE="de_DE.UTF-8" LC_NUMERIC="de_DE.UTF-8" LC_TIME="de_DE.UTF-8" … LC_IDENTIFICATION="de_DE.UTF-8" LC_ALL= 现在我想编写UTF-8编码的内容到控制台。 现在,Python使用UTF-8编码FS,但是默认编码为ASCII 🙁 >>> import sys >>> sys.getdefaultencoding() 'ascii' >>> sys.getfilesystemencoding() 'UTF-8' 我认为最好的(干净的)方法是设置PYTHONIOENCODING环境variables。 但是Python似乎忽略了它。 至less在我的系统上,我保持ascii作为默认编码,甚至在设置envvar之后 。 # tried this in ~/.bashrc and ~/.profile (also sourced them) # and on the commandline before running python export PYTHONIOENCODING=UTF-8 如果我在脚本开始时执行以下操作,它的工作原理如下: >>> import sys >>> reload(sys) # to enable `setdefaultencoding` […]
我还在学Python,我有一个疑问: 在Python 2.6.x中,我通常在文件头中声明这样的编码(如PEP 0263 ) # -*- coding: utf-8 -*- 之后,我的string照常写: a = "A normal string without declared Unicode" 但每次我看到一个python项目代码,编码没有在头上声明。 相反,它是这样的每一个string声明: a = u"A string with declared Unicode" 有什么不同? 这是什么目的? 我知道Python 2.6.x默认设置ASCII编码,但是它可以被头声明覆盖,那么每个string声明有什么意义呢? 附录:似乎我把文件编码与string编码混在一起。 感谢您解释:)
在Python中我需要做什么来弄清楚哪一种编码?
我有一个utf-8 php文件中的以下php代码: var_dump(setlocale(LC_CTYPE, 'de_DE.utf8', 'German_Germany.utf-8', 'de_DE', 'german')); var_dump(mb_internal_encoding()); var_dump(mb_internal_encoding('utf-8')); var_dump(mb_internal_encoding()); var_dump(mb_regex_encoding()); var_dump(mb_regex_encoding('utf-8')); var_dump(mb_regex_encoding()); var_dump(preg_replace('/\bweiß\b/iu', 'weiss', 'weißbier')); 我想最后一个正则expression式只replace完整的单词而不是单词的一部分。 在我的Windows电脑上,它返回: string 'German_Germany.1252' (length=19) string 'ISO-8859-1' (length=10) boolean true string 'UTF-8' (length=5) string 'EUC-JP' (length=6) boolean true string 'UTF-8' (length=5) string 'weißbier' (length=9) 在networking服务器(linux)上,我得到: string(10) "de_DE.utf8" string(10) "ISO-8859-1" bool(true) string(5) "UTF-8" string(10) "ISO-8859-1" bool(true) string(5) "UTF-8" string(9) "weissbier" […]
我在Windows 7上使用Python 2.6 我从这里借用了一些代码: Python,Unicode和Windows控制台 我的目标是能够在Windows控制台中显示uft-8string。 在python 2.6中进行了可怕的修改 sys.setdefaultencoding函数() 不再支持 不过,在我尝试使用它之前,我写了reload(sys),它神奇地没有错误。 此代码不会出错,但会显示有趣的字符而不是日文文本。 我相信问题是因为我没有成功改变Windows控制台的代码页。 这些是我的尝试,但他们不工作: reload(sys) sys.setdefaultencoding('utf-8') print os.popen('chcp 65001').read() sys.stdout.encoding = 'cp65001' 也许你可以使用win32console来改变代码页? 我试过从我链接的网站的代码,但它也从win32console错误..也许代码是过时的。 这是我的代码,这不是错误,但打印有趣的字符: #coding=<utf8> import os import sys import codecs reload(sys) sys.setdefaultencoding('utf-8') sys.stdout = codecs.getwriter('utf8')(sys.stdout) sys.stderr = codecs.getwriter('utf8')(sys.stderr) #print os.popen('chcp 65001').read() print(sys.stdout.encoding) sys.stdout.encoding = 'cp65001' print(sys.stdout.encoding) x = raw_input('press enter to continue') a […]
我无法使用PDFBox将unicode字符写入PDF。 这是一些示例代码,生成垃圾字符,而不是输出“š”。 我可以添加什么来获得对UTF-8string的支持? PDDocument document = new PDDocument(); PDPage page = new PDPage(); document.addPage(page); PDPageContentStream contentStream = new PDPageContentStream(document, page); PDType1Font font = PDType1Font.HELVETICA; contentStream.setFont(font, 12); contentStream.beginText(); contentStream.moveTextPositionByAmount(100, 400); contentStream.drawString("š"); contentStream.endText(); contentStream.close(); document.save("test.pdf"); document.close();
我有一个ArrayBuffer ,其中包含使用UTF-8编码的string,我无法find将此类ArrayBuffer转换为JS String (我知道使用UTF-16编码)的标准方法。 我已经在很多地方看到了这个代码,但是我没有看到它是如何处理比1字节长的任何UTF-8代码点的。 return String.fromCharCode.apply(null, new Uint8Array(data)); 同样,我找不到从String转换为UTF-8编码的ArrayBuffer的标准方式。
我已经从MySQL数据库迁移到SQL Server(政治),原始的MySQL数据库使用UTF8。 现在我读了SQL Server 2008不支持utf8的https://dba.stackexchange.com/questions/7346/sql-server-2005-2008-utf-8-collation-charset ,这是个玩笑吗? SQL Server承载多个数据库,大部分是拉丁文编码的。 由于迁移数据库旨在用于Web发布,我想保持utf8编码。 我是否错过了某些东西,或者是否需要在应用程序级别进行编码/解码?
我的系统:win7 + R-3.0.2。 > Sys.getlocale() [1] "LC_COLLATE=Chinese (Simplified)_People's Republic of China.936;LC_CTYPE=Chinese (Simplified)_People's Republic of China.936;LC_MONETARY=Chinese (Simplified)_People's republic of China.936;LC_NUMERIC=C;LC_TIME=Chinese (Simplified)_People's Republic of China.936" 在微软记事本中保存了两个相同内容的文件: 一个保存为ansi格式, 另一个保存为utf8格式,数据为马来西亚航空公司M370的死亡名称。 或者你可以这样创build文件。 1)将数据复制到Microsoft记事本。 乘客姓名,性别,出生dateHuangTianhui,男,1948/05/28姜翠云,女,1952/03/27李红晶,女,1994/12/09 2)在记事本中以ansi格式保存为test.ansi。 3)在记事本中以utf-8格式保存为test.utf8。 read.table("test.ansi",sep=",",header=TRUE) #can work fine read.table("test.utf8",sep=",",header=TRUE) #can't work 然后,我把编码设置为utf-8。 options(encoding="utf-8") read.table("test.utf8",sep=",",header=TRUE,encoding="utf-8") In read.table("test.utf8", sep = ",",header=TRUE,encoding = "utf-8") : invalid input found on input connection […]
我们有一个系统,客户,主要是欧洲的input文本(UTF-8),必须分发到不同的系统,其中大部分接受UTF-8,但现在我们还必须将文本分发到只接受美国的美国系统–Ascii 7位 所以现在我们需要把所有的欧洲人物翻译成最近的美国阿西西。 有没有任何Java库来帮助完成这个任务? 现在我们刚刚开始添加一个翻译表,其中Å(瑞典语AA) – > A等,我们没有find任何匹配input的字符,我们会logging下来,并用一个问号并尝试修复下一个版本,但似乎效率非常低,而其他人之前一定做过类似的事情。