Tag: utf 8

如何通过UTF-8编码通过ServletOutputStream字符发送

我的servlet代码如下所示: response.setContentType("text/html; charset=UTF-8"); response.setCharacterEncoding("UTF-8"); ServletOutputStream out = response.getOutputStream(); out.println(…MY-UTF-8 CODE…); … 那么我得到的错误: java.io.CharConversionException: Not an ISO 8859-1 character: ש javax.servlet.ServletOutputStream.print(ServletOutputStream.java:89) javax.servlet.ServletOutputStream.println(ServletOutputStream.java:242) rtm.servlets.CampaignLogicServlet.doPost(CampaignLogicServlet.java:68) javax.servlet.http.HttpServlet.service(HttpServlet.java:637) javax.servlet.http.HttpServlet.service(HttpServlet.java:717) 如何切换Servlet输出stream的字符集?

如何修复双重编码的UTF8字符(在utf-8表中)

之前的LOAD DATA INFILE是在假定CSV文件是latin1编码的情况下运行的。 在此导入期间,多字节字符被解释为两个单字符,然后使用utf-8(再次)进行编码。 这种双重编码造成的exception像ñ而不是ñ 。 如何纠正这些string?

将UTF-8转换为base64string

我尝试将UTF-8转换为base64string。 例如:我在UTF-8有“abcdef ==”。 这实际上是一个base64string的“表示”。 我怎样才能检索“abcdef ==” base64string(注意,我不想从UTF-8 “abcdef ==”“翻译”,我想获得一个string编码在base64这是 “abcdef ==” ) 编辑由于我的问题似乎不清楚,这里是一个重新定义: 我的字节数组(假设我把它命名为A)由一个base64string表示。 在base64转换A给了我“abcdef ==” 该string表示forms通过UTF-8中的套接字发送(请注意,UTF-8和base64中的string表示forms完全相同)。 所以我收到一个UTF-8消息,其中包含UTF-8中的“whatever / abcdef == / whatever”。 所以我需要从此套接字消息中检索base64“abcedf ==”string以获得A. 我希望这更清楚!

如何在Scala或Java中使用混合编码读取文本文件?

我想parsing一个CSV文件,理想情况下使用weka.core.converters.CSVLoader。 但是,我拥有的文件不是有效的UTF-8文件。 它主要是一个UTF-8文件,但一些字段值是在不同的编码,所以没有编码整个文件是有效的,但我需要parsing它。 除了使用像Weka这样的java库之外,我主要在Scala工作。 我甚至无法读取文件usin scala.io.Source:例如 Source. fromFile(filename)("UTF-8"). foreach(print); 抛出: java.nio.charset.MalformedInputException: Input length = 1 at java.nio.charset.CoderResult.throwException(CoderResult.java:277) at sun.nio.cs.StreamDecoder.implRead(StreamDecoder.java:337) at sun.nio.cs.StreamDecoder.read(StreamDecoder.java:176) at java.io.InputStreamReader.read(InputStreamReader.java:184) at java.io.BufferedReader.fill(BufferedReader.java:153) at java.io.BufferedReader.read(BufferedReader.java:174) at scala.io.BufferedSource$$anonfun$iter$1$$anonfun$apply$mcI$sp$1.apply$mcI$sp(BufferedSource.scala:38) at scala.io.Codec.wrap(Codec.scala:64) at scala.io.BufferedSource$$anonfun$iter$1.apply(BufferedSource.scala:38) at scala.io.BufferedSource$$anonfun$iter$1.apply(BufferedSource.scala:38) at scala.collection.Iterator$$anon$14.next(Iterator.scala:150) at scala.collection.Iterator$$anon$25.hasNext(Iterator.scala:562) at scala.collection.Iterator$$anon$19.hasNext(Iterator.scala:400) at scala.io.Source.hasNext(Source.scala:238) at scala.collection.Iterator$class.foreach(Iterator.scala:772) at scala.io.Source.foreach(Source.scala:181) 我非常乐意把所有的无效字符都扔掉,或者用一些假的replace掉。 我将有许多像这样的文本以各种方式处理,可能需要将数据传递给各种第三方库。 一个理想的解决scheme是某种全局设置,它会导致所有的低级java库忽略文本中的无效字节,这样我就可以在不修改的情况下对这些数据调用第三方库。 解: import java.nio.charset.CodingErrorAction import scala.io.Codec […]

JVM属性-Dfile.encoding = UTF8或UTF-8?

我想知道什么是Java虚拟机(JVM)属性的值设置我的文件编码为UTF-8。 我把-Dfile.encoding=UTF8或-Dfile.encoding=UTF-8 ?

在python中散列unicodestring

我尝试散列一些Unicodestring: hashlib.sha1(s).hexdigest() UnicodeEncodeError: 'ascii' codec can't encode characters in position 0-81: ordinal not in range(128) 其中s是这样的: œΣ¡™£¢∞§¶•ªº-≠œΣ'®†¥¨øπ“'åß∂ƒ©˙Δ˚¬…æΩ≈ç√∫~μ≤≥÷åйцукенгшщзхъфывапролджэячсмитьбююю..юбьтијџўќ†њѓѕ” “«««\dzћ÷…•Δљl«єђxcvіƒm≤≥ї!@#$©^&*(()———-ΔΔΔΔΔΔΔΔΔΔΔΔΔ ΔΔΔΔΔΔ•…÷÷ћzdzћ…•ΔљlљΔ•…÷÷ћzћ…•ΔљΔ•…љΔ•…љΔ•…Δљ•…Δљ•…љΔ•…Δ• …Δ•…Δ•Δ…•÷Δ•…÷Δ•…÷Δ•…÷Δ•…÷Δ•…÷Δ•…÷Δ•… 我应该修补什么?

在Python中不使用BOM将UTF-8与BOM转换为UTF-8

这里有两个问题。 我有一套通常是带有BOM的UTF-8的文件。 我想将它们(理想情况下)转换为UTF-8,不含BOM。 看起来像codecs.StreamRecoder(stream, encode, decode, Reader, Writer, errors)将处理此。 但是我没有看到使用过程中的任何好例子。 这是处理这个问题的最好方法吗? source files: Tue Jan 17$ file brh-m-157.json brh-m-157.json: UTF-8 Unicode (with BOM) text 另外,如果我们能够处理不同的input编码而不明确地知道(见ASCII和UTF-16),那将是理想的。 看来这应该都是可行的。 是否有解决scheme,可以采取任何已知的Python编码和输出为UTF-8没有BOM? 编辑1从下面sol'n(谢谢!) fp = open('brh-m-157.json','rw') s = fp.read() u = s.decode('utf-8-sig') s = u.encode('utf-8') print fp.encoding fp.write(s) 这给了我以下错误: IOError: [Errno 9] Bad file descriptor 新闻快报 我被告知在评论中,错误是我用模式'rw'而不是'r +'/'r + b'打开文件,所以我最终应该重新编辑我的问题,并删除解决的部分。

什么是UTF-16的重点?

我从来没有理解UTF-16编码的重点。 如果需要将string视为随机访问(即代码点与代码单元相同),则需要UTF-32,因为UTF-16的长度仍然是可变的。 如果你不需要这个,那么与UTF-8相比,UTF-16似乎是一个巨大的空间浪费。 UTF-16与UTF-8和UTF-32相比有什么优势?Windows和Java为什么使用它作为它们的本地编码?

Ruby将CSV文件读取为UTF-8和/或将ASCII-8Bit编码转换为UTF-8

我使用ruby1.9.2 我试图parsing一个包含一些法语单词(例如spécifié) 的CSV文件 ,并将内容放在MySQL数据库中。 当我从CSV文件中读取行时, file_contents = CSV.read("csvfile.csv", col_sep: "$") 元素返回为ASCII-8BIT编码的string(spécifié变成sp \ xE9cifi \ xE9),然后像“spécifié”这样的string不能正确保存到我的MySQL数据库中。 耶胡达卡茨说,ASCII-8BIT是真正的“二进制”的数据,这意味着CSV不知道如何读取适当的编码。 所以,如果我试图使CSV像这样编码: file_contents = CSV.read("csvfile.csv", col_sep: "$", encoding: "UTF-8") 我得到以下错误 ArgumentError: invalid byte sequence in UTF-8: 如果我回到我的原始ASCII-8BIT编码string,并检查我的CSV读取为ASCII-8BIT的string,它看起来像这个“Non sp \ xE9cifi \ xE9”而不是“Nonspécifié”。 我无法使用"Non sp\xE9cifi\xE9".encode("UTF-8")将“Non sp \ xE9cifi \ xE9”转换为“Nonspécifié”。 因为我得到这个错误: Encoding::UndefinedConversionError: "\xE9" from ASCII-8BIT to UTF-8 Katz指出会发生这种情况,因为ASCII-8BIT并不是真正的string“编码”。 问题: 我可以得到CSV来读取我的文件在适当的编码? 如果是这样,怎么样? […]

多lessUTF-8文本适合MySQL“文本”字段?

根据MySQL,一个text列保存了65535字节。 所以如果这是一个合理的边界,那么它实际上只适合大约32k的UTF-8字符,对吧? 或者是这种“模糊”边界之一,写文档的人不能从字节中指出字符,如果设置为utf8_general_ci ,它实际上会允许〜64k UTF-8字符?