Tag: 字符编码

编码/解码有什么区别?

我从来没有确定,我明白str / unicode解码和编码之间的区别。 我知道str().decode()是用于当你有一个字节的string,你知道有一个特定的字符编码,给定的编码名称,它将返回一个Unicodestring。 我知道unicode().encode()根据给定的编码名称将unicode字符转换为一个字节的string。 但是我不明白str().encode()和unicode().decode()是什么。 任何人都可以解释,也可能还纠正我上面错了什么? 编辑: 几个答案给出了.encode在string上做了什么的信息,但是似乎没有人知道.decode对于unicode所做的。

在java中编码转换

有没有免费的Java库,我可以使用一个编码中的string转换为其他编码,像iconv在PHP中? 我正在使用Java版本1.3。

URL编码Unicode字符的正确方法是什么?

我知道非标准的%uxxxxscheme,但这并不是一个明智的select,因为该scheme已被W3C拒绝。 一些有趣的例子: 心的性格。 如果我在浏览器中input: http://www.google.com/search?q=♥ 然后复制并粘贴它,我看到这个URL http://www.google.com/search?q=%E2%99%A5 这使得它看起来像Firefox(或Safari)正在这样做。 urllib.quote_plus(x.encode("latin-1")) '%E2%99%A5' 这是有道理的,除了不能用Latin-1编码的东西,就像三重点字符。 … 如果我input的url http://www.google.com/search?q=… 进入我的浏览器,然后复制并粘贴,我得到 http://www.google.com/search?q=%E2%80%A6 背部。 这似乎是做的结果 urllib.quote_plus(x.encode("utf-8")) 这是有道理的,因为…不能用Latin-1编码。 但是接下来我不清楚浏览器是如何知道是用UTF-8还是用Latin-1来解码。 由于这似乎是模棱两可的: In [67]: u"…".encode('utf-8').decode('latin-1') Out[67]: u'\xc3\xa2\xc2\x80\xc2\xa6' 工作,所以我不知道如何浏览器找出是否使用UTF-8或Latin-1解码。 用我需要处理的特殊字符做什么是正确的?

连字符后没有换行符

我正在寻找防止连字符后面的换行符-与所有浏览器兼容的个案基础。 例: 我有这样的文字: 3-3/8"在HTML中是这样的: 3-3/8&rdquo; 问题是,在一个行的末尾,由于连字符的原因,它会打断并换行,而不是像完整的单词那样对待它。 3- 3/8" 我试过插入“零宽度字符”,  没有运气… 3-3/8&rdquo; 我在Safari中看到这一点,并认为它将在所有的浏览器相同。 以下是我的doctype和字符编码… <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd"> <html xmlns="http://www.w3.org/1999/xhtml"> <meta http-equiv="Content-Type" content="text/html;charset=utf-8" /> 连字符之后有什么办法可以防止它们断线? 我不需要任何适用于整个页面的解决scheme…只要我可以根据需要插入一些东西,比如“零宽度不中断字符”,除了一个可以工作的东西。 这是一个演示。 简单地使框架变窄,直到连字符断开。 http://jsfiddle.net/RagKH/

将UTF-8string经典ASP转换为SQL数据库

所以我正确地转换法文字符有问题。 基本上,我有一个表单发送数据到SQL数据库。 然后,在另一页上,来自该DB的数据被检索并显示给用户。 但是数据(string)被显示为错误的字符,因为另一页上的表单input是法文的。 我通过使用下面的函数将string转换为正确的字符集来克服这个问题。 但是,显然更好的解决scheme是将其转换为FIRST,然后将其发送到数据库。 现在这里是将从DB检索的string转换为相应的字符集的代码: Function ConvertFromUTF8(sIn) Dim oIn: Set oIn = CreateObject("ADODB.Stream") oIn.Open oIn.CharSet = "WIndows-1252" oIn.WriteText sIn oIn.Position = 0 oIn.CharSet = "UTF-8" ConvertFromUTF8 = oIn.ReadText oIn.Close End Function 我从这里得到这个函数: 经典的ASP – 如何将一个UTF-8string转换为UCS-2? 现在我的问题是,我用什么函数事先转换string,然后将它们发送到数据库,所以当我检索他们时,他们将是很好的去? 试过保罗的方法: 所以有第1页和第2页。第1页包含一个表单,当提交时,将string发送到数据库,然后在第2页中进行检索。我尝试了Paul的解决scheme,通过删除ConvertFromUTF8函数并保持原来的状态(它返回了怪异的芒果字符)。 之后,我在页面1和页面2的顶部添加了以下行。 <%@LANGUAGE="VBSCRIPT" CODEPAGE="65001"%> 我在这两页上也有以下内容: Response.CodePage = 65001 Response.CharSet = "UTF-8" 但它没有工作:( 编辑:它的作品!,非常感谢你的帮助! 我所需要做的只是在第三页(我甚至没有谈到)上添加“CodePage = 65001”,在那里写数据库部分正在发生。

什么是“Content-type:application / json; charset = utf-8“真的是什么意思?

当我使用JSON正文向我的REST服务发出POST请求时,我包含Content-type: application/json; charset=utf-8 消息头中的Content-type: application/json; charset=utf-8 。 没有这个标题,我从服务中得到一个错误。 我也可以成功地使用Content-type: application/json而不使用;charset=utf-8部分。 charset=utf-8究竟干什么? 我知道它指定的字符编码,但没有它的服务工作正常。 这种编码是否限制了可以在消息体中的字符?

jQuery的AJAX字符编码

我目前正在编写一个法文网站。 有一个时间表页面,可以使用侧面链接加载另一天的日程安排。 这里是我用来做到这一点的JS: <script type="text/javascript"> function load(y) { $.get(y,function(d) { $("#replace").html(d); mod(); }); } function mod() { $("#dates a").click(function() { y = $(this).attr("href"); load(y); return false; }); } mod(); </script> 实际的AJAX就像一个魅力。 我的问题在于对请求的回应。 因为是法文网站,所以有很多重音字母。 我使用ISO-8859-15字符集就是这个原因。 但是,在对我的AJAX请求的响应中,重音符号变成了'',因为字符编码似乎被改回到UTF-8。 我如何避免这种情况? 我已经尝试在请求的文档的顶部添加一些PHP来设置字符集: <?php header('Content-Type: text/html; charset=ISO-8859-15'); ?> 但是,这似乎也没有工作。 有什么想法吗? 另外,虽然你们任何一个在这里看…为什么最右边的一列似乎变小了,当一个新的页面被加载,导致表扭曲和<td>每个<li>包装到下一行? 干杯

PHP DOMDocument loadHTML不能正确编码UTF-8

我试图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 […]

我可以让git将文件识别为UTF-16文件吗?

我在git中跟踪一个虚拟PC虚拟机文件(* .vmc),在做一次改变之后,git将这个文件标识为二进制文件,并且不会对我进行区分。 我发现这个文件是用UTF-16编码的。 可以教git认识到这个文件是文本,并适当地处理它? 我在Cygwin下使用git,core.autocrlf设置为false。 如果需要,我可以在UNIX下使用mSysGit或git。

Python:将Unicode转换为ASCII而不会出错

我的代码只是一个网页,然后将其转换为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在某处包含一些错误的尝试。 我可以放下任何代码字节导致问题,而不是得到一个错误?