1
haimall 2018-06-09 11:59:11 +08:00 via Android
转了一大圈 是不是就是 gbk 与 utf-8 的编码区别?
|
2
input2output 2018-06-09 12:00:53 +08:00 1
|
3
eslizn 2018-06-09 12:01:30 +08:00 1
死扣存储,讲道理 utf8 是变长,怎么算都算不准的,出这题人 sb
|
4
sagaxu 2018-06-09 12:01:40 +08:00 via Android
省下来的钱,还不够 cover 增加的开发成本
|
5
lukefan 2018-06-09 12:01:58 +08:00
gzip 后忽略不计
|
7
nikoo OP @input2output @haimall 用公式如何计算这个差别?
@eslizn "utf8 是变长"?所以无法计算其差别吗?愿闻其详! @sagaxu 这只是一个面试题。。。 @lukefan 未 gzip 呢? |
8
yidinghe 2018-06-09 12:08:37 +08:00
楼主改为 GBK 编码之后,节省了存储空间,得到了表扬,很爽。终于到了某天发现存储内容包含了日文和韩文,于是想了个办法:将内容改为 URL 编码,自此噩梦开始了。
|
9
smdbh 2018-06-09 12:09:59 +08:00
中英文比例 9:1,我是不信的
|
10
momocraft 2018-06-09 12:10:01 +08:00 1
估算: 1 汉字在 GBK2 字节 在 UTF8 3 多一点字节
但有这个也算不出成本...你甚至不知道收费是怎么算的 lol |
11
nikoo OP |
12
congeec 2018-06-09 12:18:25 +08:00 via iPhone
Http header
TCP header Up header 也都算流量哦 |
13
eslizn 2018-06-09 12:19:12 +08:00
@nikoo utf8 变长存储的,虽然 [一般] 汉字占用 3 个字节,但是不排除有超过的,所以无法预期输入内容的情况下,做不到精准计算
|
14
nikoo OP @momocraft 谢谢,有一点收获和思路了
我知道这个情况不太符合现实,并且现实世界中流量成本计算方式也不是像题目里说的那么简单 但这就像学数学计算一个水缸的水多久会流光, 我不能在试卷上填写:“世界上没有这种水缸” 或者:“这不就是计算水流动速度吗?”用一个问题回答另一个问题 |
16
zhujinliang 2018-06-09 12:21:13 +08:00
面试官问完了这个题,本想借此题发挥一下:你看,其实节省不了什么,所以不要做过度优化
哪料程序员一拍桌子,sb 公司,老子不面了 |
17
shyangs 2018-06-09 12:23:14 +08:00 1
数学计算不会去维护水缸,你会去维护网站,维护 GBK 网站准备被坑吧
|
22
rrfeng 2018-06-09 12:34:32 +08:00 via Android 1
这玩意儿要算起来得一篇论文。
|
23
Humorce 2018-06-09 12:36:08 +08:00
源代码中英文比例 9:1
你打开一个小说页面看看有没有这么夸张。 |
24
wdlth 2018-06-09 12:37:52 +08:00
这是一个多层次的问题,毕竟不只是页面文本是 UTF-8 的,数据库、缓存、RPC 等地方都得算进去。
还有一个重要的点是 JSON,根据 RFC8259,在数据交换时 JSON 的文本数据必须使用 UTF-8 编码,用 GBK 编码有得玩。 |
26
3dwelcome 2018-06-09 13:03:34 +08:00 via Android 1
utf8 三字节,gbk 二字节。节约三分之一的磁盘空间。
传输的话,都是压缩,基本没区别。 |
28
Foolt 2018-06-09 14:37:45 +08:00
什么垃圾问题,要是我遇到用 GBK 的公司,直接拒绝。
|
29
si 2018-06-09 15:28:17 +08:00
GBK 和 UTF8 的英文没区别,大致情况下 GBK 中文 2 字节和 UTF8 中文 3 字节。2:3 差别大概 1/3。
中文与英文比例为 9:1。9 可以减少 1/3。相当于中文只要 6。6+1=7。 不考虑其他情况,内容只有原来的 70%。 |
30
nooper 2018-06-09 16:05:13 +08:00 via iPad
题目出得挺 sb 的
|
31
SoloCompany 2018-06-09 19:17:18 +08:00 1
UTF8 编码是 ascii 安全的,这是最重要的一点
大多数亚洲字符集(当然包括 GB ),要么编码空间不足无法表示所有的 unicode,要么就是 ascii 不安全 ascii 不安全,也就是说某些 ascii 特殊字符,比如 “<“, “>”, “&”, “/“, “%” 这些,都有可能被字符集为了增加那么一点微不足道的效率而用到了编码上 这样所造成的后果,当你碰上了就知道有多麻烦了。 |
32
BingoXuan 2018-06-09 19:37:37 +08:00 via Android
想起微信支付 api 报错返回中文是 GBK 编码的=_=
|
33
chinvo 2018-06-09 19:45:26 +08:00
@congeec #12
> Http header > TCP header > Up header 也都算流量哦 自己实现一个协议和“浏览器”,把 TCP/IP 和 HTTP 里面的“无用”以及“保留”的字节全部清理掉 每个网站都要装一个自己的协议驱动和浏览器,美滋滋 [doge] |
34
Servo 2018-06-09 19:51:32 +08:00
GB18030 最强(手动滑稽)
|
35
sunsol 2018-06-09 20:22:11 +08:00
真正的问题是 html,js,css 如何能达到中英比例 9:1
一般的情况下中文页面的中英比例基本是 1:9, 就是小说页面中英比例最多也就 1:3, 要想达到 9:1 这页面会是什么样子,没法想象啊。 |
36
Mutoo 2018-06-09 21:52:04 +08:00
换成 GBK 后,PM 说,我们想在文本里支持一下 emoji,233...
|
37
lhx2008 2018-06-09 22:46:08 +08:00 via Android
包含 css 和 js 怎么可能 9:1,1:9 还差不多,当他们是易语言吗。英文的话,UTF8 长度是一字节,所以,有啥意义?
|
38
imn1 2018-06-09 23:37:08 +08:00 1
汉字 /日语平假、片假 /朝鲜字符和主要标点符号都在 FFFF 以内,utf-8 对应是三字节
部分汉字(主要是生辟字和异体字),extB/C/D 在 FFFF 以上,utf8 四字节,但这些汉字总数很少,甚少用到 GBK 是双字节 ASCII (0-127),utf-8/GBK 都是单字节 |
39
ilylx2008 2018-06-09 23:53:08 +08:00 via Android
这题是考验你如何做取舍,正确答案是,为了一点点流量费,改为 gbk 是不科学的选择。
|
40
di94sh 2018-06-10 00:00:01 +08:00 via Android
gbk 2 字节编码 utf-8 中文 3 字节
|
42
mozutaba 2018-06-10 00:19:25 +08:00 1
|