©CC BY-NC-SA 4.0
🚩加入 Nostr!moe 社区: join.nostr.moe
Windows 下的 UTF-8 编码问题 - 续二

第二坑很快就踩到了, 这次是 Windows 文件系统的路径编码问题. 在启用 UTF-8 默认支持后, 系统里已经安装的软件如果没有强制硬编码了使用某一种编码, 那么这些软件里曾经在 GBK 环境下引用的路径也会一律会以 UTF-8 编码读取. 于是这些原本是 GBK 编码存储的路径变量或者配置文件无一例外全都 UTF-8 解码后变成了乱码(比如我正在使用的 FS Capture 和 eDiary).

特别是 Windows 中的库目录, 会随着语言区域的切换变换命名语言, 所以中文语言设置下的库目录都是非 ASCII 字符(中文). 然而大多数的软件又都喜欢用这几个默认的库目录(比如文档, 音乐, 图片等等).

这次的结论是: 最好在 Windows 初始化好, 还没有开始安装配置其他软件的时候就启用默认 UTF-8 编码支持. 否则在系统和其他软件配置完成后再切换编码, 很容易导致这样的路径编码问题.

#Windows

via CXPLAY's Memos
Windows 下的 UTF-8 编码问题 - 续一

好快的踩坑. 果然在启用 UTF-8 的默认支持后就出现了问题. 这次是在 zip 压缩格式上的字符编码上, 准确一点来说是中文编码. 如果在 Windows 的 GBK(cp936) 语言区域设置下使用 zip 打包并加密了一个文档, 将其密码设置为中文字符, 那么这个加密之后的文档在启用了 UTF-8(cp65001) 默认支持的 Windows 系统上是验证不了密码的(也就是密码错误). 除非更换到相同的系统编码配置(取消 UTF-8 默认支持). 但这实际上是 zip 字符编码的问题, 因为相同的 GBK 编码环境下打包的 rar 和 7z 加密格式在 UTF-8 默认支持环境下验证密码完全没有问题. 类似的情况会发生在任何默认不使用 UTF-8 支持的 Windows 上.

这次问题的结论是: 不要在 zip 归档中使用非 ASCII 字符作为密码, 即使最新的规范中 zip 允许使用 UTF-8 编码, 但没有规定密码应该使用的编码, 并且几乎所有的软件都不遵守(不会设置 UTF-8 标志), 甚至会随意使用除了 zip 规范里规定的 cp437 和 UTF-8 之外的编码(日语 Shift-JIS(cp932) 和简体中文 GBK(cp936) 是最常见的重灾区). 在 7z 的实现里 zip 归档时甚至默认不允许使用非 ASCII 字符作为密码, 但另外一个有名的压缩软件 WinRAR 却支持使用任意字符的 zip 密码, 包括中文字符甚至 Emoji.

#Windows

via CXPLAY's Memos
Electron 的软件存 cookie 的方式怎么也都和浏览器一模一样, 如果用了 AdGuard 修饰了 cookie 的生存时间, 即使是设定第三方 cookie(软件里哪来的第一方?), 都会被一律修饰掉, 然后第二天你又要重新登录这个 Electron 软件了. #吐槽
Proxy Toggle 是一个帮助 Android 开发和调试快速开启全局代理的工具, Android 5.0+ 需要使用过 ADB 授权 WRITE_SECURE_SETTINGS 权限:

GitHub: theappbusiness/android-proxy-toggle: Small application to help android developers to quickly enable and disable proxy settings
Releases: Releases · theappbusiness/android-proxy-toggle

Releases 里面包含构建好的 APK 和 ADB 推送脚本, 脚本不包含权限设置. 卸载客户端之前必须要先断开代理状态, 否则会一直保留代理状态.

#software #Android #networkrelay #opensource

via CXPLAY's Memos
今天把哔哩哔哩客户端(Android)的首页分析完了, 发现广告是真的多的. 首页视频流一次时间线刷新(默认的双列模式)算作整体浏览空间的话, 大多数情况一次就有 30% 的面积都是广告, 如果恰好刷出了轮播广告, 比例会提到 40% 以上.

这些广告除掉固定位置的搜索栏滚动关键词外, 包括:
1. 轮播广告.
2. 剧集推荐.
3. 外链网页广告.
4. 卡片式(占双列)视频广告, 通常是自有UP上传的产品相关视频.
5. 外链网页广告(动态封面版).
6. 游戏推荐.
7. UP买推广出来的自荐视频.
8. 另外一种视频广告(占双列), 通常是广告主直接投的广告片.

#吐槽
Reqable - 「先进」的网络调试分析工具

HttpCanary 作者的新作品. 基于 Flutter 和 C++ 开发, 界面相对现有的同类工具都很「先进」. 目前支持 Windows, macOS, Linux, 计划支持移动端(iOS, Android).

定价层分为免费社区版, 专业版(¥79.9/年), 企业版(¥59.9/年, 三许可起). 订阅制计费, 移动端页面上称 "将作为桌面端的订阅赠品".

网站: 先进API生产力工具 | Reqable
GitHub: reqable/reqable-app: Reqable issue track repo

#software #Windows #Linux #macOS

via CXPLAY's Memos
在中国大陆使用广告拦截器拦截合法网络广告是违法的:

第十六条 互联网广告活动中不得有下列行为:

(一)提供或者利用应用程序、硬件等对他人正当经营的广告采取拦截、过滤、覆盖、快进等限制措施;
(二)利用网络通路、网络设备、应用程序等破坏正常广告数据传输,篡改或者遮挡他人正当经营的广告,擅自加载广告;
(三)利用虚假的统计数据、传播效果或者互联网媒介价值,诱导错误报价,谋取不正当利益或者损害他人利益。

----------------------
国家工商行政管理总局令(第87号)互联网广告管理暂行办法__2016年第29号国务院公报_中国政府网
----------------------

#形势政策

via CXPLAY's Memos
现在都很流行用在线的 DNS 服务器比如 AdGuard Home 来屏蔽广告. 但是如果能自己管理 hosts 文件, 那就不会用这种办法. 不过现在没办法方便地管理 hosts, 就还是非常麻烦. Android 上有 AdAway, Windows 上好像没找到这类专门处理 hosts 的软件.

但是同时 hosts 的局限性也很大, 复杂拦截的情况下很难适应, 最好还是选择用专门的服务处理. #吐槽
CXPLAY World
沉浸式翻译这会员价格... #吐槽
不知道相同的文字量下面 DeepL 和 OpenAI 谁更便宜.
Windows 下的 UTF-8 编码问题

----------------------
这几天又遇到 Windows 下的字符编码问题了, 于是还是决定记录一下.
----------------------

由于 Windows NT 发布时 UTF-8 甚至都没有出现, 所以微软选择 Unicode 的时候用了 UTF-16. 虽然现在 Windows 的区域设置里有一个选项能够让 Windows 默认使用 UTF-8 来显示字符, 但直到今天 Windows 11 这个选项都还是 beta 状态不会给你默认启用.

在简体中文的设置下 Windows 默认使用 cp936(GBK) 代码页, 英语设置下使用 cp850 或者 cp1252(Windows-1252). 如果开启了区域设置里的 UTF-8 支持, 则会变成 cp65001(UTF-8). 当初为了标准化各种字符集名称才使用系统内的代码页进行编号, 但 Unicode 出现后还是继续用代码页, 于是出现了这种盛况:
PS C:\Users\CXPLAY> python -c 'import locale;  print(locale.getpreferredencoding()); import sys; print(sys.getdefaultencoding())'
cp65001
utf-8

系统首选的编码是 cp65001, Python 解释器默认编码是 utf-8, 所以说 cp65001 等于 UTF-8, 又不等于 UTF-8?

但我也还记得我很久之前在 Windows 10 上开启过这个 UTF-8 支持选项, 但后来不知道为什么又主动去关掉了, 原因已经记不清楚了, 可能等以后踩到坑才会想起来吧.

#note #Windows #Python

via CXPLAY's Memos
正则真的是人能读得懂的吗🫠 #吐槽
Back to Top