阅读 214

js对象能不能使用中文key

导入

 {    "中文":{      name: '中文',      value: 'xxxx'      color: '#fff',    }  } 复制代码

从技术上讲,一般的中文字符也是属于 utf-8 的,对于 js 编译器而言,它并不会考虑是英文还是中文的问题,甚至你也可以用 emoji 来作为属性名....

前提条件是设定了文档的编码格式,一般默认编码模式为 utf-8。但有一些编辑器并不会设定默认值,页面里的中文变成非语义化的字符(俗称乱码)了。或者某些人的浏览器默认编码并不是 utf-8,而是例如 gb2312、gbk 之类的编码,那么也可能产生乱码。

总的看来,汉字作为属性名虽然可行,但并不能保证所有平台或浏览器上能够统一的正常显示,这是一个比较严重的问题。

js对象和属性

一个对象的属性名可以是任何有效的 JavaScript 字符串,或者可以被转换为字符串的任何类型,包括空字符串。

然而,一个属性的名称如果不是一个有效的 JavaScript 标识符(例如,一个由空格或连字符,或者以数字开头的属性名),就只能通过方括号标记访问。这个标记法在属性名称是动态判定(属性名只有到运行时才能判定)时非常有用。例如:

 // 同时创建四个变量,用逗号分隔  var myObj = new Object(),      str = "myString",      rand = Math.random(),      obj = new Object();    myObj.type              = "Dot syntax";  myObj["date created"]   = "String with space";  myObj[str]              = "String value";  myObj[rand]             = "Random Number";  myObj[obj]              = "Object";  myObj[""]               = "Even an empty string";    console.log(myObj);   复制代码

MDN 对象详解

问题

  1. 理解性差。第一、如果一个不懂中文的人来维护,就不认识。第二、如果中文的命名词不达意,你也不知道要表达什么意思。

  2. 代码易读性差。中文文都混合在一起,头大。

  3. url阐述解析。如果需要在url param中,转码后会不直观。

  4. 国际化问题。如果做国际化,作为key,去做映射,就比较坑大了。

结论

没规定不可以,但是不建议使用。

认识编码

编码是用预先规定的方法将文字、数字或其它对象编成数码,或将信息、数据转换成规定的电脉冲信号。为保证编码的正确性,编码要规范化、标准化,即需有标准的编码格式。常见的编码格式有ASCII、ANSI、GBK、GB2312、UTF-8、GB18030和UNICODE等。

为什么需要编码

对于计算机而言,它只是认识0和1。但是n多的0和1组合起来,让我们来操作,是不是比较头疼,想想那个场景。。。惊悚。那怎么办,要用我们人类的语言来表达,然后通过翻译,给计算机。就OK了。

由于人类的语言有太多,因而表示这些语言的符号太多,所以编码格式的种类也就比较多了。

编码格式

编码格式描述
ASCII 码总共有 128 个,用一个字节的低 7 位表示,031 是控制字符如换行回车删除等;32126 是打印字符,可以通过键盘输入并且能够显示出来。
GB2312它的全称是《信息交换用汉字编码字符集 基本集》,它是双字节编码,总的编码范围是 A1-F7,其中从 A1-A9 是符号区,总共包含 682 个符号,从 B0-F7 是汉字区,包含 6763 个汉字。
GBK全称叫《汉字内码扩展规范》,是国家技术监督局为 windows95 所制定的新的汉字内码规范,它的出现是为了扩展 GB2312,加入更多的汉字,它的编码范围是 8140~FEFE(去掉 XX7F)总共有 23940 个码位,它能表示 21003 个汉字,它的编码是和 GB2312 兼容的,也就是说用 GB2312 编码的汉字可以用 GBK 来解码,并且不会有乱码。
GB18030全称是《信息交换用汉字编码字符集》,是我国的强制标准,它可能是单字节、双字节或者四字节编码,它的编码与 GB2312 编码兼容,这个虽然是国家标准,但是实际应用系统中使用的并不广泛。
Unicode它是一个很大的集合,现在的规模可以容纳100多万个符号。每个符号的编码都不一样,比如,U+0639表示阿拉伯字母AinU+0041表示英语的大写字母AU+4E25表示汉字。具体的符号对应表,可以查询unicode.org,或者专门的汉字对应表。
UTF-8UTF-8 是在互联网上使用最广的一种 Unicode 的实现方式。UTF-8 是 Unicode 的实现方式之一。它是一种变长的编码方式。它可以使用1~4个字节表示一个符号,根据不同的符号而变化字节长度。
UTF-16UTF-16 用两个字节来表示 Unicode 转化格式,它是定长的表示方法,不论什么字符都可以用两个字节表示,两个字节是 16 个 bit。

总结

对于编码出现的歧义现象,或者说是我们感觉转化很困难的时候,是不是应该反思一下,我们一开始就是错误的。


作者:每天都是不一样的太阳
链接:https://juejin.cn/post/7169142920698675208


文章分类
代码人生
版权声明:本站是系统测试站点,无实际运营。本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌抄袭侵权/违法违规的内容, 请发送邮件至 XXXXXXo@163.com 举报,一经查实,本站将立刻删除。
相关推荐