跳到正文
简体中文
工作台什么都不上传的工具
ODERSA 协会的一间工坊什么都不外传,什么都不留存,什么都到不了我们手里。

工坊 · 做二维码

怎么用 : 做二维码

几乎所有免费的二维码生成器做出来的都是一个绕经它们自己服务器的跳转链接:它们数着每一次扫码,而服务一关,码就死了。这一个把您的数据写进码里,就在这儿,什么都不发送,还把它算出来的码字给您看。

打开工具

免费二维码生成器的坑到处都一样,却很少有人讲:很多生成器并不把您的网址放进码里。它们放的是一个指向它们自己服务器的跳转链接,再由那里转到您那边。于是每一次扫码都被记在它们那儿,带着时间和国家;而等哪天服务关了或者改成收费,您印出来的所有码就全都失效了。贴在橱窗上的一张贴纸,变成一个死方块。

在这里,内容是写进码里的。没有跳转,没有计数,不用注册账号,也没有任何东西离开您的设备:整个编码器都是在这个页面里手写的,纠错部分也是。在这里做出来的码,十年后照样能用,因为它不依赖任何人。

工具会把自己的活儿摊开给您看。它告诉您选了哪个版本、哪个纠错级别、哪种编码模式、留下了哪个掩码,并把它算出来的码字显示出来。这就是可核验的地方:我们的编码器逐字节地复现了两组公开的测试向量。那份标准的正文要花钱,我们没有拿到,我们把这件事说出来,而不是让人以为我们读过。

怎么用

  1. 把码里要装的东西粘进来:一个网址、一段文字、一行 wifi 配置(最常被问到的一个,页面下方给出了确切格式)。
  2. 调好纠错级别和尺寸。纠错越高,码越经得起污渍或者折痕,同时也越密。
  3. 点一下,看着码出现,然后按需要下载成 PNG(给屏幕用)或者 SVG(给印刷用)。印一千份之前,请先用您的手机扫一下。

支持的格式

工具的原料是一段文字:网址、留言、联系方式、一行配置。它输出一张 PNG 图片或者一个 SVG 文件。至于读二维码,这里不提供:请看下面的限制。

PNG 图片

边角利落的方块,按您指定的模块尺寸生成。在屏幕上、邮件里或者文档里用的就是这个格式。

SVG 矢量图

一个矢量图文件,所以印多大都清晰:海报、橱窗、名片就该用这个格式。它里面只有一条路径和一种颜色,任何绘图软件都打得开。

查看兼容性对照表

它的限制

这件工具只做二维码,不会读二维码

浏览器自带的读码功能靠的是操作系统:它在 macOS、ChromeOS 和安卓上的 Chromium 里有,Windows 和 Linux 上没有,Firefox 从来没实现过,而 Safari 那个实验版从 iOS 18 起就是坏的。内嵌一个完整的解码器等于再做一件工具,还得配一整套核验。所以这个位置是“做”,这一点写在“我们的做法”那一页上。至于您手机的相机,它读二维码读得很好。

工具支持版本 1 到版本 10,最多 271 个字符

两个理由,都很老实。首先是密度:版本 10 每边已经有 57 个模块,再往上,一台普通手机在小尺寸印刷的码上就开始扫不出来了。其次是数表:版本 10 以上的纠错分块大小,我们没有找到任何自己读得到的来源,而我们不照别人的话抄数字。上限取决于纠错级别和内容:最低纠错下按字节模式是 271 个字符,最高纠错下是 106 个。

我们没有读过那份标准的正文,这一点我们说出来

ISO/IEC 18004 标准要花钱买。我们的容量表和纠错表来自两份彼此独立、结论一致的资料(一份被广泛使用的权威教程,以及一个公认实现的源代码),从来不是来自标准正文。我们自己动手核验过的东西,比照抄更结实:这个编码器逐字节复现了两组公开的测试向量,数据码字和纠错码字都对上了,选出来的掩码也一样;我们用纠错码重新算出来的三十二个格式串,跟公布的表完全相同;而每个版本的容量,用我们自己的排布代码在符号几何上重算一遍,也回到了表上宣称的总数。只有四个模块的静默区那一条,我们在标准正文里直接读到过。

四个模块的白边不是装饰

标准要求四边都有,而这是我们唯一能在它正文里直接读到的一点。没有它,读码器找不到符号的边界:码看着没问题,就是扫不出来。所以工具绝不会低于四个模块,哪怕您这么要求,而且它会告诉您。

码中间不放标志

放在中间的标志会盖住一些模块,码之所以还能用,全靠它的纠错。要核实这一点就得去读产出的码,而这件工具不会读。所以我们不提供一个自己没法核实结果的功能:那等于卖一张贴纸。

基本拉丁字母之外的字符按 UTF-8 编码,不加声明编码的头

在字节模式下,标准默认的是 ISO-8859-1 字符集,而所有人写的都是 UTF-8。现代读码器会自己猜出来,大多数生成器也是这么做的。我们不加那个用来声明编码的解释头,因为有些老读码器不认它:今天兼容性最好的做法就是这一种。后果是:在老式读码器上,一段俄文或者中文可能会显示成乱码。跟所有二维码一样,印之前先测一下。

批量印刷之前,一定先扫一遍

这不是对这件工具的保留意见,这是这一行的规矩。一个太小的、印在反光面上的、对比度不足的、或者离折痕太近的二维码,不管是哪件工具做的都读不出来。花一分钟用您自己的手机验一下,胜过一千张废贴纸。

“QR Code”是 DENSO WAVE INCORPORATED 的注册商标

只要符合标准,这种码本身的使用是自由且免版税的,它的发明者在自己网站上白纸黑字写着。但“QR Code”这两个词是注册商标,使用时必须注明。我们在鸣谢页上注明了,这里也注明。

关于这个工具的问题

我码里的内容会被发到什么地方吗?

不会,而这正是这件工具的意义。三十秒就能验证:按 F12 打开开发者工具,切到“网络”标签页,清空列表,然后粘上文字生成一个码。一行都不会冒出来。把网断掉再做一遍:编码器就写在页面里,表现完全一样。这一点在这里很重要,因为二维码里常常装着一个私人地址、一个 wifi 密码或者一份联系方式。

跟普通的免费生成器有什么区别?

很多免费生成器并不把您的网址写进码里:它们放的是一个指向自己服务器的链接,再由那里跳转。结果看着是同一个方块,但每一次扫码都被记在它们那儿,带着时间,往往还有国家;而等哪天服务关了或者改成收费,这个码就不能用了。这就是印了一千张贴纸之后的经典惨剧。在这里,您的内容在码里面:它不依赖任何人,十年后照样能用。

怎么做一个能连 wifi 的二维码?

粘一行手机认得的格式进来:WIFI:T:WPA;S:网络名称;P:密码;; 把名称和密码换成您自己的,末尾那两个分号别漏掉。如果是开放网络,就写 T:nopass,并把 P 留空。有一点要留神:这个码里明文装着您的 wifi 密码,任何人只要拍到它就拿到了。给家里的客人用很方便,贴在橱窗上就该避免。

纠错级别要往上调吗?

看这个码要在什么地方过日子。屏幕上或者文档里,中等已经绰绰有余。要贴在会淋雨、被手摸、还有反光的地方,就往上调:最高级别下,码大约有三成被损坏也照样读得出来。代价是密度:同样的内容要用更多模块,同样大小下每个方块就更细。在小尺寸印刷上,一个太密的码有时反而比一个纠错低些、却更清楚的码难扫。

选 PNG 还是 SVG?

屏幕、邮件、幻灯片或者办公文档用 PNG:它是图片,哪儿都插得进去。凡是要印刷的都用 SVG:它是矢量图,从邮票大小到海报大小都清晰,而且只有几 KB。我们产出的 SVG 里只有一条路径和一种颜色,没有一行多余的东西,所有绘图和排版软件都打得开。

为什么这里不也做读码?

因为浏览器的读码功能远远做不到到处都有。它靠的是操作系统:macOS、ChromeOS 和安卓上的 Chromium 有,Windows 和 Linux 上没有,Firefox 从来没实现过,Safari 上从 iOS 18 起是坏的。我们不想要一件对一部分访客能用、对另一部分只显示一句道歉的工具。何况您手机的相机本来就把二维码读得很好,用不着经过一个网站。

我能在中间放上自己的标志吗?

这里不行。放在中间的标志会盖住一些模块,码之所以还能用全靠它的纠错:要确认它照样扫得出来,就得去读产出的码,而这件工具不会读。我们宁可不提供一个自己没法核实结果的功能。如果您非要不可,就用最高纠错级别下载 SVG,在绘图软件里把标志放上去,面积不要超过码的十分之一,用之前再扫一遍。

怎么知道这个码是对的?

两件事,而真正算数的是第二件。第一,工具会把它算出来的数据码字和纠错码字显示出来:我们把它们跟两组公开的测试向量比对过,完全对上,这就把整条计算链验过了。第二,也是对您真正要紧的:用您的手机扫一下这个码。任何内部检查都替代不了那个真正要用它的读码器。