From 4417feab53be7f53094f0618a64bd6eb6351e6e8 Mon Sep 17 00:00:00 2001 From: HolographicHat Date: Sun, 17 Apr 2022 23:46:11 +0800 Subject: [PATCH] encode uri to avoid charset problem --- export.js | 4 ++-- native/src/main.cc | 4 +--- native/src/utils.cc | 6 +----- utils.js | 4 +++- 4 files changed, 7 insertions(+), 11 deletions(-) diff --git a/export.js b/export.js index 3166928..754ae8d 100644 --- a/export.js +++ b/export.js @@ -2,8 +2,8 @@ const fs = require("fs") const axios = require("axios") const readline = require("readline") const { randomUUID } = require("crypto") -const { loadCache, log } = require("./utils") -const { openUrl, checkSnapFastcall, copyToClipboard } = require("./native") +const { loadCache, log, openUrl } = require("./utils") +const { checkSnapFastcall, copyToClipboard } = require("./native") const exportToSeelie = proto => { const out = { achievements: {} } diff --git a/native/src/main.cc b/native/src/main.cc index 9b3bdf9..7ba065a 100644 --- a/native/src/main.cc +++ b/native/src/main.cc @@ -171,9 +171,7 @@ namespace native { Value openUrl(const CallbackInfo &info) { Env env = info.Env(); - string nUrl = info[0].As().Utf8Value(); - wstring url = GetACP() == 936 ? StringToWString(nUrl, CP_UTF8) : StringToWString(nUrl); - Log(env, L"openUrl: " + url); + wstring url = StringToWString(info[0].As().Utf8Value()); HINSTANCE retcode = ShellExecute(GetConsoleWindow(), L"open", url.c_str(), nullptr, nullptr, SW_SHOWNORMAL); return Napi::Number::New(env, (INT_PTR)retcode); // NOLINT(cppcoreguidelines-narrowing-conversions) } diff --git a/native/src/utils.cc b/native/src/utils.cc index 6f393fc..1ae89b2 100644 --- a/native/src/utils.cc +++ b/native/src/utils.cc @@ -42,11 +42,7 @@ LSTATUS OpenFile(Env env, Napi::String &result, HWND parent) { open.lpstrFilter = L"国服/国际服主程序 (YuanShen/GenshinImpact.exe)\0YuanShen.exe;GenshinImpact.exe\0"; open.lStructSize = sizeof(open); if(GetOpenFileName(&open)) { - if (GetACP() == 936) { - result = Napi::String::New(env, WStringToString(file, CP_UTF8)); - } else { - result = Napi::String::New(env, WStringToString(file)); - } + result = GetACP() == 936 ? Napi::String::New(env, WStringToString(file, CP_UTF8)) : Napi::String::New(env, WStringToString(file)); return ERROR_SUCCESS; } else { return ERROR_ERRORS_ENCOUNTERED; diff --git a/utils.js b/utils.js index 952b458..6d86fc8 100644 --- a/utils.js +++ b/utils.js @@ -122,6 +122,8 @@ const checkPortIsUsing = () => { } } +const openUrl = url => native.openUrl(encodeURI(url)) + const splitPacket = buf => { let offset = 0 let arr = [] @@ -290,5 +292,5 @@ class KPacket { module.exports = { log, encodeProto, decodeProto, initConfig, splitPacket, upload, brotliCompressSync, brotliDecompressSync, - setupHost, loadCache, debug, checkUpdate, KPacket, checkGameIsRunning, checkPortIsUsing + setupHost, loadCache, debug, checkUpdate, KPacket, checkGameIsRunning, checkPortIsUsing, openUrl }