[面试难题] 中文站点用 GBK 编码代替 UTF-8 编码,可以节约多少储存/带宽成本?

2018-06-09 11:53:55 +08:00
 nikoo
一个中文站点,平均 HTML 页面源代码(包含 JS/CSS )的中文与英文比例为 9:1
站点没有图片,所有流量皆为 HTML 页面流量

目前使用的是 UTF-8 编码
内容储存成本 1,000/月
流量带宽成本 10,000/月

那么请问如果将该站改为 GBK 编码,如何计算修改后其储 /带宽成本?

求教各位,这个问题题库里从没见过,网上也搜不到答案,直接蒙圈了
5114 次点击
所在节点    问与答
44 条回复
eslizn
2018-06-09 12:28:58 +08:00
@nikoo 看我第一条回复,金币不多,恕不奉陪
rrfeng
2018-06-09 12:34:32 +08:00
这玩意儿要算起来得一篇论文。
Humorce
2018-06-09 12:36:08 +08:00
源代码中英文比例 9:1
你打开一个小说页面看看有没有这么夸张。
wdlth
2018-06-09 12:37:52 +08:00
这是一个多层次的问题,毕竟不只是页面文本是 UTF-8 的,数据库、缓存、RPC 等地方都得算进去。
还有一个重要的点是 JSON,根据 RFC8259,在数据交换时 JSON 的文本数据必须使用 UTF-8 编码,用 GBK 编码有得玩。
nikoo
2018-06-09 12:44:44 +08:00
@wdlth 问题的条件里说了流量全部为 HTML 页面,并没有 JSON
3dwelcome
2018-06-09 13:03:34 +08:00
utf8 三字节,gbk 二字节。节约三分之一的磁盘空间。
传输的话,都是压缩,基本没区别。
nikoo
2018-06-09 13:04:57 +08:00
@3dwelcome 非常感谢!假设没有使用传输压缩的话,是否也是大约节约三分之一的流量成本?
Foolt
2018-06-09 14:37:45 +08:00
什么垃圾问题,要是我遇到用 GBK 的公司,直接拒绝。
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%。
nooper
2018-06-09 16:05:13 +08:00
题目出得挺 sb 的
SoloCompany
2018-06-09 19:17:18 +08:00
UTF8 编码是 ascii 安全的,这是最重要的一点

大多数亚洲字符集(当然包括 GB ),要么编码空间不足无法表示所有的 unicode,要么就是 ascii 不安全

ascii 不安全,也就是说某些 ascii 特殊字符,比如 “<“, “>”, “&”, “/“, “%” 这些,都有可能被字符集为了增加那么一点微不足道的效率而用到了编码上

这样所造成的后果,当你碰上了就知道有多麻烦了。
BingoXuan
2018-06-09 19:37:37 +08:00
想起微信支付 api 报错返回中文是 GBK 编码的=_=
chinvo
2018-06-09 19:45:26 +08:00
@congeec #12

> Http header
> TCP header
> Up header 也都算流量哦

自己实现一个协议和“浏览器”,把 TCP/IP 和 HTTP 里面的“无用”以及“保留”的字节全部清理掉

每个网站都要装一个自己的协议驱动和浏览器,美滋滋

[doge]
Servo
2018-06-09 19:51:32 +08:00
GB18030 最强(手动滑稽)
sunsol
2018-06-09 20:22:11 +08:00
真正的问题是 html,js,css 如何能达到中英比例 9:1
一般的情况下中文页面的中英比例基本是 1:9,
就是小说页面中英比例最多也就 1:3,
要想达到 9:1 这页面会是什么样子,没法想象啊。
Mutoo
2018-06-09 21:52:04 +08:00
换成 GBK 后,PM 说,我们想在文本里支持一下 emoji,233...
lhx2008
2018-06-09 22:46:08 +08:00
包含 css 和 js 怎么可能 9:1,1:9 还差不多,当他们是易语言吗。英文的话,UTF8 长度是一字节,所以,有啥意义?
imn1
2018-06-09 23:37:08 +08:00
汉字 /日语平假、片假 /朝鲜字符和主要标点符号都在 FFFF 以内,utf-8 对应是三字节
部分汉字(主要是生辟字和异体字),extB/C/D 在 FFFF 以上,utf8 四字节,但这些汉字总数很少,甚少用到

GBK 是双字节
ASCII (0-127),utf-8/GBK 都是单字节
ilylx2008
2018-06-09 23:53:08 +08:00
这题是考验你如何做取舍,正确答案是,为了一点点流量费,改为 gbk 是不科学的选择。
di94sh
2018-06-10 00:00:01 +08:00
gbk 2 字节编码 utf-8 中文 3 字节

这是一个专为移动设备优化的页面(即为了让你能够在 Google 搜索结果里秒开这个页面),如果你希望参与 V2EX 社区的讨论,你可以继续到 V2EX 上打开本讨论主题的完整版本。

https://www.v2ex.com/t/461697

V2EX 是创意工作者们的社区,是一个分享自己正在做的有趣事物、交流想法,可以遇见新朋友甚至新机会的地方。

V2EX is a community of developers, designers and creative people.

© 2021 V2EX