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);
问题
- 理解性差。第一、如果一个不懂中文的人来维护,就不认识。第二、如果中文的命名词不达意,你也不知道要表达什么意思。
- 代码易读性差。中文文都混合在一起,头大。
- url阐述解析。如果需要在url param中,转码后会不直观。
- 国际化问题。如果做国际化,作为key,去做映射,就比较坑大了。
结论
没规定不可以,但是不建议使用。
认识编码
编码是用预先规定的方法将文字、数字或其它对象编成数码,或将信息、数据转换成规定的电脉冲信号。为保证编码的正确性,编码要规范化、标准化,即需有标准的编码格式。常见的编码格式有ASCII、ANSI、GBK、GB2312、UTF-8、GB18030和UNICODE等。
为什么需要编码
对于计算机而言,它只是认识0和1。但是n多的0和1组合起来,让我们来操作,是不是比较头疼,想想那个场景。。。惊悚。那怎么办,要用我们人类的语言来表达,然后通过翻译,给计算机。就OK了。
由于人类的语言有太多,因而表示这些语言的符号太多,所以编码格式的种类也就比较多了。
编码格式
编码格式 | 描述 |
---|---|
ASCII 码 | 总共有 128 个,用一个字节的低 7 位表示,0 |
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 表示阿拉伯字母Ain ,U+0041 表示英语的大写字母A ,U+4E25 表示汉字严 。具体的符号对应表,可以查询unicode.org,或者专门的汉字对应表。 |
UTF-8 | UTF-8 是在互联网上使用最广的一种 Unicode 的实现方式。UTF-8 是 Unicode 的实现方式之一。它是一种变长的编码方式。它可以使用1~4个字节表示一个符号,根据不同的符号而变化字节长度。 |
UTF-16 | UTF-16 用两个字节来表示 Unicode 转化格式,它是定长的表示方法,不论什么字符都可以用两个字节表示,两个字节是 16 个 bit。 |
总结
对于编码出现的歧义现象,或者说是我们感觉转化很困难的时候,是不是应该反思一下,我们一开始就是错误的。
参考文章
转载自:https://juejin.cn/post/7169142920698675208