我在Ruby(1.9)中编写一个爬取器,从大量的随机站点中消耗大量的HTML。 当试图提取链接时,我决定只使用.scan(/href="(.*?)"/i)而不是nokogiri / hpricot(主要加速)。 问题是我现在收到很多“ invalid byte sequence in UTF-8 ”错误。 从我的理解, net/http库没有任何编码特定的选项,进来的东西基本上没有正确标记。 实际使用传入数据的最佳方式是什么? 我尝试使用replace和无效的选项设置.encode ,但目前为止没有成功…
我从外部服务器加载HTML。 HTML标记具有UTF-8编码,包含字符如ľ,,,č,,,etc.等等。当我用如下的file_get_contents()加载HTML时: $html = file_get_contents('http://example.com/foreign.html'); 它混淆了UTF-8字符,并加载了Å,¾,¤和类似的废话,而不是正确的UTF-8字符。 我该如何解决这个问题? 更新: 我试着把HTML保存到一个文件并用UTF-8编码输出。 两者都不起作用,所以它意味着file_get_contents()已经返回了错误的HTML。 UPDATE2: <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd"> <html xmlns="http://www.w3.org/1999/xhtml" xml:lang="sk" lang="sk"> <head> <meta http-equiv="Content-Type" content="text/html; charset=UTF-8" /> <meta http-equiv="Content-Style-Type" content="text/css" /> <meta http-equiv="Content-Language" content="sk" /> <title>Test</title> </head> <body> <?php $html = file_get_contents('http://example.com'); echo htmlentities($html); ?> </body> </html>
我的类别需要用希腊字母命名。 我正在使用ggplot2 ,并与数据美妙地工作。 不幸的是,我不知道如何把这些希腊符号放在X轴上(在刻度线上),也使它们出现在图例中。 有没有办法做到这一点? 更新:我看了一下链接 ,但是,没有描述完成我想要做的好方法。
我试图parsing一些使用DOMDocument的HTML,但是当我这样做时,我突然失去了我的编码(至less这是我看来)。 $profile = "<div><p>various japanese characters</p></div>"; $dom = new DOMDocument(); $dom->loadHTML($profile); $divs = $dom->getElementsByTagName('div'); foreach ($divs as $div) { echo $dom->saveHTML($div); } 这段代码的结果是,我得到了一堆不是日文的字符。 但是,如果我这样做: echo $profile; 它显示正确。 我试过saveHTML和saveXML,并没有正确显示。 我正在使用PHP 5.3。 我所看到的: ã¤ãªãã¤å·ã·ã«ã´ã«ã¦ãã¢ã¤ã«ã©ã³ãç³»ã®å®¶åºã«ã9人åå¼ã®5çªç®ã¨ãã¦çã¾ãããå½¼ãå«ãã¦4人ã俳åªã«ãªã£ããç¶è¦ªã¯æ¨æã®ã»ã¼ã«ã¹ãã³ã§ãæ¯è¦ªã¯éµä¾¿å±ã®å®¢å®¤ä¿ã ã£ããé«æ ¡æ代ã¯ãã£ãã£ã®ã¢ã«ãã¤ãã«å¤ãã¿ãæè²è³éãåããªããã«ããªãã¯ç³»ã®é«æ ¡ã¸é²å¦ã 应该显示什么: イリノイ州シカゴにて、アイルランド系の家庭に、9人兄弟の5番目として生まれる。彼を含めて4人が俳優になった。父親は木材のセールスマンで、母親は郵便局の客室係だった。高校時代はキャディのアルバイトに勤しみ、教育資金を受けながらカトリック系の高校へ進学 编辑:我简化了代码到五行,所以你可以自己testing。 $profile = "<div lang=ja><p>イリノイ州シカゴにて、アイルランド系の家庭に、</p></div>"; $dom = new DOMDocument(); $dom->loadHTML($profile); echo $dom->saveHTML(); echo $profile; 这是返回的HTML: <div lang="ja"><p>イリノイ州シカゴã«ã¦ã€ã‚¢ã‚¤ãƒ«ãƒ©ãƒ³ãƒ‰ç³»ã®å®¶åºã«ã€</p></div> <div […]
我的代码只是一个网页,然后将其转换为Unicode。 html = urllib.urlopen(link).read() html.encode("utf8","ignore") self.response.out.write(html) 但是我得到一个UnicodeDecodeError : Traceback (most recent call last): File "/Applications/GoogleAppEngineLauncher.app/Contents/Resources/GoogleAppEngine-default.bundle/Contents/Resources/google_appengine/google/appengine/ext/webapp/__init__.py", line 507, in __call__ handler.get(*groups) File "/Users/greg/clounce/main.py", line 55, in get html.encode("utf8","ignore") UnicodeDecodeError: 'ascii' codec can't decode byte 0xa0 in position 2818: ordinal not in range(128) 所以我认为这意味着HTML在某处包含一些错误的尝试。 我可以放下任何代码字节导致问题,而不是得到一个错误?
理解阅读和写文本到一个文件(Python 2.4),我有一些脑力衰竭。 # The string, which has an a-acute in it. ss = u'Capit\xe1n' ss8 = ss.encode('utf8') repr(ss), repr(ss8) (“u'Capit \ xe1n'”,“'Capit \ xc3 \ xa1n'”) print ss, ss8 print >> open('f1','w'), ss8 >>> file('f1').read() 'Capit\xc3\xa1n\n' 所以我inputCapit\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' 我在这里不了解什么? 显然有一些重要的魔法(或者说是有意义的)我失踪了。 一个人input到文本文件中以获得正确的转换? 我真的没有在这里讨论什么,UTF-8的代表性是什么,如果你真的不能让Python认出它,当它来自外部。 也许我应该只是JSON转储string,并使用它,因为它有一个asciiable表示! […]
我想弄清楚什么样的sorting规则我应该使用各种types的数据。 我将要存储的内容100%是用户提交的。 我的理解是我应该使用UTF-8通用CI(不区分大小写)而不是UTF-8 Binary。 但是,我无法在UTF-8 General CI和UTF-8 Unicode CI之间find明确的区别。 我应该将用户提交的内容存储在UTF-8 General或UTF-8 Unicode CI列中吗? UTF-8二进制文件适用于什么types的数据?
目前我正在尝试使用Spring MVC。 在尝试的时候遇到了一个编码问题。 我想在JSP页面上显示UTF-8字符,所以我添加了一个带有UTF-8字符的string到我的ModelAndView。 它看起来像这样: @Controller public class HomeController { private static final Logger logger = LoggerFactory.getLogger(HomeController.class); @RequestMapping(value="/", method=RequestMethod.GET) public ModelAndView home() { logger.info("Welcome home!"); return new ModelAndView("home", "utftest", "ölm"); } } 在JSP页面上,我只想显示带有UTF-8字符的string,如下所示: <%@ page language="java" pageEncoding="UTF-8"%> <%@ page contentType="text/html;charset=UTF-8" %> <%@ taglib uri="http://java.sun.com/jsp/jstl/core" prefix="c" %> <%@ page session="false" %> <html> <head> <meta http-equiv="Content-Type" content="text/html; […]
使用UTF-8时, Out-File似乎强制BOM: $MyFile = Get-Content $MyPath $MyFile | Out-File -Encoding "UTF8" $MyPath 如何使用PowerShell以UTF-8编写不含BOM的文件?
这是我的连接设置: Connection conn = DriverManager.getConnection(url + dbName + "?useUnicode=true&characterEncoding=utf-8", userName, password); 而且在向表中添加一行时出现以下错误: Incorrect string value: '\xF0\x90\x8D\x83\xF0\x90…' for column 'content' at row 1 我插入了成千上万的logging,当文本包含\ xF0时(即不正确的string值始终以\ xF0开头),我总是得到这个错误。 该列的sorting规则是utf8_general_ci。 可能是什么问题呢?