Skip to content

v0.2.1

Latest

Choose a tag to compare

@github-actions github-actions released this 30 Sep 01:20
· 1 commit to main since this release

v0.2.1 — 错误对话框说人话了

一个小补丁:修掉 Windows 上错误对话框里的中文乱码。没有接口变化,也没有新依赖。

本次改动

  • fatal() 弹出的对话框终于看得懂了。 原来那句是
    MessageBoxW(nullptr, std::wstring(msg.begin(), msg.end()).c_str(), ...),
    它是按字节往 wchar_t 里塞:一个汉字(UTF-8 3 字节)会变成 3 个乱码字符;
    又因为 MSVC 的 char 是带符号的,字节 0xE7 还会符号扩展成 0xFFE7。
    结果「端口 18087 已被占用」在对话框里显示成
    ￧ᆱᆵ←マᆪ 18087 ←ᄋᄇ│ᄁᆱ←ヘᅠ￧ヤᄄ —— 数字还在,中文一个不剩。
    现在用 to_wstring_utf8()(MultiByteToWideChar(CP_UTF8, ...))真正转一次码。
  • 为什么值得单独发一版:三条 fatal() 消息全是中文,其中
    「webview 初始化/运行失败: … 请确认已安装 WebView2 运行时」正好是第一次用的人最容易
    撞上的那条;而项目默认 GUI 子系统(不弹黑框)、没有控制台,这个对话框是唯一的报错出口 ——
    糊在那里等于什么都没说。/W3 下编译器一句警告都没有,所以这个坑一直活着。
  • OutputDebugStringA → OutputDebugStringW:同一个病根,日志在 VS 输出窗口 /
    DebugView 里同样是糊的。
  • to_wstring_utf8() 的 flags 传 0,不传 MB_ERR_INVALID_CHARS:非法字节换成
    U+FFFD,而不是让报错本身失败 —— 和 json_text() 用 error_handler_t::replace 一个态度。
  • README 补坑 12:/utf-8 的连带后果(Win32 的 *A 接口在 /utf-8 下一个都用不了,
    MessageBoxA 不是退路),以及「把对话框正文读回来核对」的验证办法。

升级提醒

没有。接口、返回值和依赖都没动,这次只改了 Windows 上的错误提示。

Linux 侧零变化:改动整个在 #ifdef _WIN32 里,CI 报的 Linux 产物大小 961,488 字节,
和 v0.2.0 那个 asset 一个字节都不差。

下载

文件 平台 运行前提
webview-demo-v0.2.1-windows-x64.exe Windows 10/11 x64 WebView2 运行时(Win11 及较新的 Win10 一般自带)
webview-demo-v0.2.1-linux-x64 Linux x64 WebKitGTK 4.1(libwebkit2gtk-4.1-0)+ 可用的显示环境

两个二进制都是推 tag 之后由 CI 现场从该 commit 编出来的,不是手工上传的。

完整变更

v0.2.0...v0.2.1