utf8 与utf-8

相信很多程序员刚开始也会有这样的疑惑,如题,我也是。

其实,他们可以这样来区分。

一、在php和html中设置编码,请尽量统一写成“UTF-8”,这才是标准写法,而utf-8只是在window中不区分大小写的写法而已,其次,大部分情况简写成“UTF8”或“utf8”程序也可以识别,但在ie浏览器就不识别它了,所以,最好,严格写成“UTF-8”,比如:

二、在数据库设置编码的时候,必须写成“utf8”,因为MySQL的命令模式中只能识别“utf8”,不能识别“utf-8”,比如:PHP程序中可以写:

utf8与utf8无BOM

在UCS 编码中有一个叫做"ZERO WIDTH NO-BREAK SPACE"的字符,它的编码是FEFF。而FFFE在UCS中是不存在的字符,所以不应该出现在实际传输中。UCS规范建议我们在传输字节流前,先传输字符"ZERO WIDTH NO-BREAK SPACE"。这样如果接收者收到FEFF,就表明这个字节流是Big-Endian的;如果收到FFFE,就表明这个字节流是Little-Endian的。因此字符"ZERO WIDTH NO-BREAK SPACE"又被称作BOM。

UTF-8不需要BOM来表明字节顺序,但可以用BOM来表明编码方式。字符"ZERO WIDTH NO-BREAK SPACE"的UTF-8编码是EF BB BF。所以如果接收者收到以EF BB BF开头的字节流,就知道这是UTF-8编码了。

UTF-8编码的文件中,BOM占三个字节。如果用记事本把一个文本文件另存为UTF-8编码方式的话,用UE打开这个文件,切换到十六进制编辑状态就可以看到开头的FFFE了。这是个标识UTF-8编码文件的好办法,软件通过BOM来识别这个文件是否是UTF-8编码,很多软件还要求读入的文件必须带BOM。可是,还是有很多软件不能识别BOM。

在Firefox早期的版本里,扩展是不能有BOM的,不过Firefox 1.5以后的版本已经开始支持BOM了。现在又发现,PHP也不支持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”即可。

关于什么是UCS编码

国际标准 ISO 10646 定义了 通用字符集 (Universal Character Set, UCS). UCS 是所有其他字符集标准的一个超集. 它保证与其他字符集是双向兼容的. 就是说, 如果你将任何文本字符串翻译到 UCS格式, 然后再翻译回原编码, 你不会丢失任何信息.

UCS 包含了用于表达所有已知语言的字符. 不仅包括拉丁语,希腊语, 斯拉夫语,希伯来语,阿拉伯语,亚美尼亚语和乔治亚语的描述, 还包括中文, 日文和韩文这样的象形文字, 以及 平假名, 片假名, 孟加拉语, 旁遮普语果鲁穆奇字符(Gurmukhi), 泰米尔语, 印.埃纳德语(Kannada), Malayalam, 泰国语, 老挝语, 汉语拼音(Bopomofo), Hangul, Devangari, Gujarati, Oriya, Telugu 以及其他数也数不清的语. 对于还没有加入的语言, 由于正在研究怎样在计算机中最好地编码它们, 因而最终它们都将被加入. 这些语言包括 Tibetian, 高棉语, Runic(古代北欧文字), 埃塞俄比亚语, 其他象形文字, 以及各种各样的印-欧语系的语言, 还包括挑选出来的艺术语言比如 Tengwar, Cirth 和克林贡语(Klingon). UCS 还包括大量的图形的, 印刷用的, 数学用的和科学用的符号, 包括所有由 TeX, Postscript, MS-DOS,MS-Windows, Macintosh, OCR 字体, 以及许多其他字处理和出版系统提供的字符.

ISO 10646 定义了一个 31 位的字符集. 然而, 在这巨大的编码空间中, 迄今为止只分配了前 65534 个码位 (0x0000 到 0xFFFD). 这个 UCS 的 16位子集称为 基本多语言面 (Basic Multilingual Plane, BMP). 将被编码在 16 位 BMP 以外的字符都属于非常特殊的字符(比如象形文字), 且只有专家在历史和科学领域里才会用到它们. 按当前的计划, 将来也许再也不会有字符被分配到从 0x000000 到 0x10FFFF 这个覆盖了超过 100 万个潜在的未来字符的 21 位的编码空间以外去了. ISO 10646-1 标准第一次发表于 1993 年, 定义了字符集与 BMP 中内容的架构. 定义 BMP 以外的字符编码的第二部分 ISO 10646-2 正在准备中, 但也许要过好几年才能完成. 新的字符仍源源不断地加入到 BMP 中, 但已经存在的字符是稳定的且不会再改变了.

UCS 不仅给每个字符分配一个代码, 而且赋予了一个正式的名字. 表示一个 UCS 或 Unicode 值的十六进制数, 通常在前面加上 "U+", 就象 U+0041 代表字符"拉丁大写字母A". UCS 字符 U+0000 到 U+007F 与 US-ASCII(ISO 646) 是一致的, U+0000 到 U+00FF 与 ISO 8859-1(Latin-1) 也是一致的. 从 U+E000 到 U+F8FF, 已经 BMP 以外的大范围的编码是为私用保留的.

UCS的实际表现形式为UTF-8/UTF-16/UFT-32编码

UCS (united counter system)统一计算系统。计算系统为数据中心基础设施采用了一种纯粹的架构方式,将计算、网络、存储访问和虚拟化统一到一个可扩展的模块化架构之中,将其作为单一系统进行管理。统一计算系统是一系列新产品中的首个产品。主要的统一计算系统组件包括:计算、网络、虚拟化、存储访问、管理、能效。

UTF-8和UTF-8无BOM,一个会导致文件中中文变量无法匹配的bug

昨晚用dom4j中的selectSingleNode解析xml,匹配节点. 发现匹配不到,但是确实存在该节点 将regex改为regex1后则可以匹配,也就是说文件中的"阿里旺旺" ...

python中字符编码及unicode和utf-8区别

ascii和unicode是字符集,utf-8是编码集 字符集:为每一个「字符」分配一个唯一的 ID(学名为码位 / 码点 / Code Point) 编码规则:将「码位」转换为字节序列的规则(编码/ ...

python正则中如何匹配汉字以及encode(‘utf-8’)和decode(‘utf-8’)的互转

正则表达式: [\u2E80-\u9FFF]+$ 匹配所有东亚区的语言  [\u4E00-\u9FFF]+$ 匹配简体和繁体  [\u4E00-\u9FA5]+$ 匹配简体

PHP的文件格式应该以UTF-8无BOM编码

前一段时间写PHP,经常在解析文件之前就要对数据进行处理判断,并以header()的方式进行页面跳转.然而后来将文件放到 linux 服务器时常碰到header()解析出错的情况,而在 windows ...

C# 编码转换 UTF8转GB2312 GB2312转UTF8

/// /// GB2312转换成UTF8 /// /// &l ...

UTF-8 有BOM和无BOM

BOM(byte order mark)是为 UTF-16 和 UTF-32 准备的,用于标记字节序(byte order).微软在 UTF-8 中使用 BOM 是因为这样可以把 UTF-8 和 AS ...

在字符编码格式选项里UTF-8(无BOM)

BOM——Byte Order Mark,就是字节序标记 在UCS 编码中有一个叫做”ZERO WIDTH NO-BREAK SPACE“的字符,它的编码是FEFF.而FFFE在UCS中是不存在的字符 ...

utf-8与utf-8(无BOM)的区别

BOM——Byte Order Mark,就是字节序标记   在UCS 编码中有一个叫做"ZERO WIDTH NO-BREAK SPACE"的字符,它的编码是FEFF.而FFFE ...

UTF-8 有BOM 和 无BOM的区别

BOM: Byte Order Mark,即字节序标志 在UCS 编码中有一个叫做"ZERO WIDTH NO-BREAK SPACE"的字符,它的编码是FEFF.而FFFE在UC ...

随机推荐

pyspider 简单应用之快速问医生药品抓取(一)

网址:http://yp.120ask.com/search/-0-0--0-0-0-0.html from pyspider.libs.base_handler import * class Han ...

MySQL获取随机数

如何通过MySQL在某个数据区间获取随机数? MySQL本身提供一个叫rand的函数,返回的v范围为0 <= v < 1.0. 介绍此函数的MySQL文档也介绍道,可以通过此计算公式FLO ...

Unity3D 使用脚本来控制 UI 的 Image 显示的图片。

php utf8(无bom),php中utf8 与utf-8 与utf8 无BOM相关推荐

  1. java utf-8字符表_Java中的ASCII、Unicode和UTF-8字符编码集

    首先讲一下几种字符的编码方式: 1. ASCII码 我们知道,在计算机内部,所有的信息最终都表示为一个二进制的字符串.每一个二进制位(bit)有0和1两种状态,因此八个二进制位就可以组合出256种状态 ...

  2. IDEA 2020.3.2控制台中文乱码分享(亲测二、下图中控制台的编码改为UTF-8)

    IDEA 2020.3.2控制台中文乱码的个人解决方案分享 我的电脑环境:win1020h2,IDEA2020.3.2,Tomcat9.0.40,终端配的powershell 1 一.改文件编码,下面 ...

  3. mysql utf8 4位_mysql中utf8和utf8mb4区别

    MySQL在5.5.3之后增加了这个utf8mb4的编码,mb4就是most bytes 4的意思,专门用来兼容四字节的unicode.好在utf8mb4是utf8的超集,除了将编码改为utf8mb4 ...

  4. Python2中编码错误---重组人表皮生长因子凝胶(易孚格式转化为UTF-8...

    Python2中编码错误---éç»äººè¡¨ç®çé¿å å­åè¶(æå­格式转化为UTF-8 在python2的使用中,总会遇到各种各样的编码问题,这也是使用Python2最头疼的一件事情,幸 ...

  5. Qt中的字符编码转换:UTF8、Unicode、GBK、ASCII、16进制字符、16进制数值

    文章目录 前言 简述 ASCII GBK Unicode UTF-8 应用场景 开发环境 编码转换 16进制数值转换为16进制字符 16进制数值转化为字符串 16进制字符串转换为Unicode字符串 ...

  6. BOM模型中常用对象 定义计数器 网页跳转 网页前进后退

    今天上午学了的BOM模型中常用对象,了解了一部分的属性 For循环的规律 外层循环控制行 内层循环控制列 <!doctype html> <html> <head> ...

  7. java utf-8编码后判断字符串长度_Java经典算法:UTF-8验证

    根据以下规则,UTF8中的字符长度可以为1到4个字节: 对于1字节字符,第一位为0,后跟其unicode码. 对于n字节字符,前n位全为1,n + 1位为0,其后为n-1个字节,其中最高有效2位为10 ...

  8. 毫末智行,现在是中国营收增速最快的无人车公司

    贾浩楠 发自 凹非寺 量子位 报道 | 公众号 QbitAI 合抱之木,生于毫末,九层之台,起于累土. 2021年行至半年,名字源自上述国学经典的自动驾驶公司毫末智行,不断引发业内外热议. 因为与长城 ...

  9. php无符号整数转有符号整数,PHP中把有符号整型转换为无符号整型方法_PHP教程...

    PHP中把有符号整型转换为无符号整型方法 这篇文章主要介绍了PHP中把有符号整型转换为无符号整型方法,转换的方法很简单,本文直接给出转换方法,需要的朋友可以参考下 在一个短地址项目中,根据六位字符与I ...

最新文章

  1. MyISAM与InnoDB区别
  2. !--处理:借款冲销不自动冲减预算--
  3. 厉害了!SpringBoot是如何动起来的!
  4. 定义交货输出确定过程(Output Determination Procedure)
  5. 为什么中国这么多高薪程序员,开发不出Java, Typescript, Python, Rust, Node.js这些基础设施?...
  6. C 温故知新 之 指针:函数指针变量、指针型函数
  7. 面试时如何回答购物车测试步骤?
  8. ELSE 技术周刊(2017.12.11期)
  9. 解决hash冲突的三个方法
  10. idea编译器没有tomcat的选项解决方案
  11. 2011最新版:移动设备管理与OMA DM协议 V7
  12. mysql同时满足升序和降序_mysql升序和降序语句
  13. Joint Autoregressive and Hierarchical Priors for Learned Image Compression文献复现
  14. 2017年2月22日-----------乱码新手自学.net 之Entity Framework 增删改
  15. 欧几里德算法 扩展欧几里德算法 求解丢番图方程
  16. Excel最大值和最小值的提取问题
  17. 工作日记---android lockscreen.java 在lock状态下显示charing和alarm
  18. 苹果硬改手机底层udid无限新机技术
  19. 为什么Java大数据是最火爆的编程语言?
  20. 《Unity 游戏设计与实现 南梦宫一线程序员的开发实例》学习笔记01

热门文章

  1. Python-matplotlib plt.tick_params参数解析
  2. 爬虫爬取豆瓣电影排行榜
  3. 上海青少年算法竞赛-6月月赛参考代码
  4. clamp.js用法初窥
  5. NOSQL 之 Graph Database 之 neo4j
  6. 提高钢材品质应用 高精度在线测径仪
  7. Mac安装mtr与brow安装
  8. 2016年苹果开发者账号申请
  9. 给图像增加一种噪声并利用至少两种低通或高通滤波器实现频率域的滤波
  10. 子之错父之过什么意思_生活|为什么子不教,父之过,这是什么意思?