About字符编码
打开"记事本"程序Notepad.exe,新建一个文本文件,内容就是一个"严"字,依次采用ANSI,Unicode,Unicode big endian 和 UTF-8编码方式保存。 然后,用文本编辑软件UltraEdit中的"十六进制功能",观察该文件的内部编码方式。 1)ANSI:文件的编码就是两个字节
打开"记事本"程序Notepad.exe,新建一个文本文件,内容就是一个"严"字,依次采用ANSI,Unicode,Unicode big endian 和 UTF-8编码方式保存。
然后,用文本编辑软件UltraEdit中的"十六进制功能",观察该文件的内部编码方式。
1)ANSI:文件的编码就是两个字节"D1 CF",这正是"严"的GB2312编码,这也暗示GB2312是采用大头方式存储的。
2)Unicode:编码是四个字节"FF FE 25 4E",其中"FF FE"表明是小头方式存储,真正的编码是4E25。
3)Unicode big endian:编码是四个字节"FE FF 4E 25",其中"FE FF"表明是大头方式存储。
4)UTF-8:编码是六个字节"EF BB BF E4 B8 A5",前三个字节"EF BB BF"表示这是UTF-8编码,后三个"E4B8A5"就是"严"的具体编码,它的存储顺序与编码顺序是一致的。
UTF-8编码的文件中,BOM占三个字节。如果用记事本把一个文本文件另存为UTF-8编码方式的话,用UE打开这个文件,切换到十六进制编辑状态就可以看到开头的FFFE了。这是个标识UTF-8编码文件的好办法,软件通过BOM来识别这个文件是否是UTF-8编码,很多软件还要求读入的文件必须带BOM。可是,还是有很多软件不能识别BOM。
PHP在设计时就没有考虑BOM的问题,也就是说他不会忽略UTF-8编码的文件开头BOM的那三个字符。
由于必须在在Bo-Blog的wiki看到,同样使用PHP的Bo-Blog也一样受到BOM的困扰。其中有提到另一个麻烦:“受COOKIE送出机制的限制,在这些文件开头已经有BOM的文件中,COOKIE无法送出(因为在COOKIE送出前PHP已经送出了文件头),所以登入和登出功能失效。一切依赖COOKIE、SESSION实现的功能全部无效。”这个应该就是Wordpress后台出现空白页面的原因了,因为任何一个被执行的文件包含了BOM,这三个字符都将被送出,导致依赖cookies和session的功能失效。
解决的办法嘛,如果只包含英文字符(或者说ASCII编码内的字符),就把文件存成ASCII码方式吧。用UE等编辑器的话,点文件->转换->UTF-8转ASCII,或者在另存为里选择ASCII编码。如果是DOS格式的行尾符,可以用记事本打开,点另存为,选ASCII编码。如果包含中文字符的话,可以用UE的另存为功能,选择“UTF-8 无 BOM”即可。
当然在Python程序中处理的时候遇到这种情况改怎么处理呢?
方法一:直接将源文件的格式修改一下,将其保存为UTF-8即可,但是很多时候传过来的源文件是没法修改的,这样就行不通了。
方法二:替换,就是将其中的\xef\xbb\xbf替换为空就可以了。
VIM 十六进制和文本模式切换
使用vim打开文件后,使用命令
:%!xxd 使用十六进制显示; :%!xxd -r 返回文本显示。
只有十六进制部分的修改才会被采用。右边可打印文本部分的修改忽略不计。
vim以二进制打开文件
vim -b binfile
在 Vim 中将文件保为无 BOM 的 UTF-8 格式
查看文件格式
通常我们需要先查看文件格式是否与预期的一样,再根据结果决定是否需要修改(当然你也可以在不知道原格式的情况下直接修改),下面分别给出了查看文件编码和是否带有 BOM 的命令。
# 查看文件编码。 set fenc? # 查看是否带 BOM。 set bomb?
修改文件格式
# 设置为 UTF-8 编码。 set fenc=utf-8 # 设置为无 BOM,如需设置为带 BOM 则使用 "set bomb"。 set nobomb # 加上BOM标记 set bomb
使用linux命令删除UTF-8编码中的BOM
shell> grep -r -I -l $'^\xEF\xBB\xBF' /path | xargs sed -i 's/^\xEF\xBB\xBF//;q' or shell> grep -r -I -l $'^\xEF\xBB\xBF' /path | xargs sed -i 's/^\xEF\xBB\xBF//g' or shell> tail -c +4 old_file > new_file
如果使用SVN提交代码的话,可以在pre-commit钩子里加上相关代码用以杜绝BOM。
#!/bin/bash REPOS="$1" TXN="$2" SVNLOOK=/usr/bin/svnlook for FILE in $($SVNLOOK changed -t "$TXN" "$REPOS" | awk '/^[AU]/ {print $NF}'); do if $SVNLOOK cat -t "$TXN" "$REPOS" "$FILE" | grep -q $'^\xEF\xBB\xBF'; then echo "Byte Order Mark be found in $FILE" 1>&2 exit 1 fi done
不含 BOM 的 UTF-8 才是标准形式!
带 BOM 的 UTF-8 就是赤裸裸的流氓!!!
不同编码的BOM表示
编码 | 十六进制表示 |
UTF-8 | EF BB BF |
UTF-16-BE | FE FF |
UTF-16-LE | FF FE |
UTF-32-BE | 00 00 FE FF |
UTF-32-LE | FF FE 00 00 |
UTF-7 | 2B 2F 76和以下的一个字节:[ 38 39 2B 2F ] |
en:UTF-1 | F7 64 4C |
en:UTF-EBCIC | DD 73 66 73 |
en:Standard Compression Scheme for Unicode | 0E FE FF |
en:BOCU-1 | FB EE 28及可能跟随着FF |
GB-18030 | 84 31 95 33 |
vim 将文件从dos格式转换到unix格式
:set fileformat=unix :w
VIM 状态栏显示 文件格式带bom
Show fileencoding and bomb in the status line
http://vim.wikia.com/wiki/Show_fileencoding_and_bomb_in_the_status_line
比如 [latin1], [iso-8859-15], [utf-8,B], etc.
if has("statusline") set statusline=% <p>其实有用的就是这段:</p> <pre class="brush:php;toolbar:false"> %{\"[\".(&fenc==\"\"?&enc:&fenc).((exists(\"+bomb\")\ &&\ &bomb)?\",B\":\"\").\"]\ \"}
原文地址:About字符编码, 感谢原作者分享。

热AI工具

Undresser.AI Undress
人工智能驱动的应用程序,用于创建逼真的裸体照片

AI Clothes Remover
用于从照片中去除衣服的在线人工智能工具。

Undress AI Tool
免费脱衣服图片

Clothoff.io
AI脱衣机

AI Hentai Generator
免费生成ai无尽的。

热门文章

热工具

记事本++7.3.1
好用且免费的代码编辑器

SublimeText3汉化版
中文版,非常好用

禅工作室 13.0.1
功能强大的PHP集成开发环境

Dreamweaver CS6
视觉化网页开发工具

SublimeText3 Mac版
神级代码编辑软件(SublimeText3)

热门话题

iPhone上的默认地图是Apple专有的地理位置提供商“地图”。尽管地图越来越好,但它在美国以外的地区运行不佳。与谷歌地图相比,它没有什么可提供的。在本文中,我们讨论了使用Google地图成为iPhone上的默认地图的可行性步骤。如何在iPhone中使Google地图成为默认地图将Google地图设置为手机上的默认地图应用程序比您想象的要容易。请按照以下步骤操作–先决条件步骤–您必须在手机上安装Gmail。步骤1–打开AppStore。步骤2–搜索“Gmail”。步骤3–点击Gmail应用旁

随着技术的发展,现在越来越多的人开始使用ISO文件。ISO文件是光盘文件的一种格式,通常包含光盘的所有内容,包括操作系统、软件、游戏等。在电脑上打开ISO文件相对简单,只需借助虚拟光驱软件即可。但是,当我们想要在手机上打开ISO文件时,可能就会比较困扰了。那么,本文将介绍一些方法,让您轻松在手机上打开ISO文件。一、使用虚拟光驱应用程序首先,我们可以通过安装

XML文件可以用PPT打开吗?XML,即可扩展标记语言(ExtensibleMarkupLanguage),是一种被广泛应用于数据交换和数据存储的通用标记语言。与HTML相比,XML更加灵活,能够定义自己的标签和数据结构,使得数据的存储和交换更加方便和统一。而PPT,即PowerPoint,是微软公司开发的一种用于创建演示文稿的软件。它提供了图文并茂的方

标题:如何解决PyCharm无法打开的问题PyCharm是一款功能强大的Python集成开发环境,但有时候我们可能会遇到无法打开PyCharm的问题。在本文中,我们将分享一些常见的解决方法,并提供具体的代码示例。希望能帮助到遇到这个问题的小伙伴们。方法一:清除缓存有时候PyCharm的缓存文件可能会导致程序无法正常打开,我们可以尝试清除缓存来解决这个问题。具

torrent种子文件是能够用软件将他打开的,那么用什么软件才能够打开呢?用户们需要用迅雷、比特彗星、qBittorrent等下载工具打开,然后就能下载了。这篇种子文件打开方式介绍就能够告诉大家具体的内容,下面就是详细的介绍,赶紧看看吧!torrent种子文件用什么打开答:用迅雷、比特彗星、qBittorrent等下载工具打开具体介绍:1、Torrent是一种BT种子文件,可以用各种下载软件打开。2、这个软件下载的人越多,就能够有更快的下载速度。3、为了确保准确性,软件每下载一个块,都会计算Ha

抖音是一款流行的短视频社交应用程序,用户不仅能观看、分享各种类型的短视频内容,还提供一系列小游戏供你玩。那么抖音小游戏从哪进呢?抖音小游戏入口在哪?下面就来看看详细教程。 方法一:小程序打开 1、点击我选项 进到抖音的主页之后,点击我选项进入。 2、点击三横线 进入到我界面之后,点击上面的三横线按钮。 3、点击小程序 打开三横线选项之后,点击里面的小程序。 4、点击抖音小游戏 进入到小程序界面之后,点击抖音小游戏那个选项即可打开。 方法二:搜索打开 1、点击放大镜 进

您的手机中缺少时钟应用程序吗?日期和时间仍将显示在iPhone的状态栏上。但是,如果没有时钟应用程序,您将无法使用世界时钟、秒表、闹钟等多项功能。因此,修复时钟应用程序的缺失应该是您的待办事项列表的首位。这些解决方案可以帮助您解决此问题。修复1–放置时钟应用程序如果您错误地从主屏幕中删除了时钟应用程序,您可以将时钟应用程序放回原位。步骤1–解锁iPhone并开始向左侧滑动,直到到达“应用程序库”页面。步骤2–接下来,在搜索框中搜索“时钟”。步骤3–当您在搜索结果中看到下方的“时钟”时,请按住它并

在word转换器中选择文件并点击开始转换就可以打开了。解析1打开CAJ转换成Word转换器,在软件左侧选择CAJ转Word。2然后选择要转换的文件并点击打开。3最后点击开始转换,就可以在Word中打开caj文件了。补充:caj是什么格式1CAJ是电子刊物的一种格式。可以使用CAJ全文浏览器来阅读。支持中国期刊网的CAJ、NH、KDH和PDF格式文件。可以在线阅读中国期刊网的原文,也可以阅读下载到本地硬盘的中国期刊网全文。它的打印效果可以达到与原版显示一致的程度。总结/注意事项CAJ是中国学术期刊
