WiFi 二维码扫不出来?差的是一个反斜杠

WiFi 二维码扫不出来?差的是一个反斜杠

一、先明白:手机只是读了一行文本

手机相机并不"理解"二维码类型,它读到的是里面写的一段有固定格式的纯文本:

类型内部格式扫码后
WiFiWIFI:T:WPA;S:名称;P:密码;;iPhone 与主流安卓弹出"加入网络"
名片vCard 3.0,BEGIN:VCARD … END:VCARD直接存入联系人
短信SMSTO:号码:内容打开短信界面并预填
电话tel:号码打开拨号界面

网址类建议带上 https://,手机才知道该用浏览器打开;内容可以是中文,按 UTF-8 编码即可。号码里的空格、短横线、括号会被去掉,扫码后是否真的拨出、发出,仍要你自己确认。

二、三个转义字符,决定 WiFi 码能不能用

WiFi 格式用分号和冒号做分隔,所以名称或密码里如果含有 \ ; , : ",必须加反斜杠转义。这正是很多工具生成的 WiFi 二维码扫不出来的原因——工具直接把原始密码塞进去,遇到冒号就把字段切断了。

另外还有两个细节常被忽略:

  • 选择"无密码"时,不应写入 P: 字段,否则手机会当成"有密码但为空"而报错;
  • 加密方式要选对:WPA/WPA2/WPA3 覆盖绝大多数家庭与公司,WEP 只用于很老的设备,选错同样连不上。

三、名片二维码:换行符也能让安卓解析失败

名片用的是通用 vCard 3.0,行与行之间必须用 \r\n 分隔。部分安卓机型对只有 \n 的写法会解析失败——表现是扫码后没反应,或者只存进去半个名字。含 , ; \ 的字段同样需要转义。

所以"扫得出来但内容不对"和"根本扫不出来"是两类问题:前者多半是格式字段错了,后者多半是静默区、对比度或尺寸的问题。

四、生成参数怎么设:三个数字

参数建议原因
尺寸300–600 像素太大印在小卡片上反而扫不出;128–1024 是可设范围
纠错等级M(约 15% 可恢复)默认档,够用且不挤占容量;L7%/Q25%/H30% 按需调
静默区4 个模块规范要求的最小空白,改成 0 图更"满"但很多扫码器直接失败

颜色上,深色码点配浅色背景最好读;黑底白字这类反色码部分扫码器不认;两色太接近会对比度不足,模块被判成灰而丢失。

五、最后一句提醒:二维码不是加密

它只是把文字换一种画法,任何扫码工具都能原样读出来,甚至不用扫、用解码软件就能还原。所以别把密码、身份证号、银行卡号放进二维码——包括别用这种方式把 WiFi 密码分享给不特定的人。真要分享,就把访客网络单独开出来,而不是把主网络密码贴在墙上。

至于生成方式,能本地完成就别上传:把内容提交给服务器,意味着你的 WiFi 密码、手机号、地址经过了别人的机器,还可能被记录。二维码的生成本身不需要后端。