【发布时间】:2013-07-01 18:01:08
【问题描述】:
我被一个问题困扰了很长一段时间。
Windows 用户帐户名包含其中一些字符(Ö、Ü、Ä)。编辑:即使是汉字。所以基本上是ASCII未涵盖的字符。 我有一个代理 pac 文件存储在 %appdata%\MyAppFolder 中。 - 扩展后的路径包含一些特殊字符,如上面提到的。
我必须在
中设置这条路径IE->InternetOptions->Connections->LAN设置->使用自动配置脚本
This translates to:
HKEY_CURRENT_USER\Software\Microsoft\Windows\CurrentVersion\Internet Settings\AutoConfigURL in the registry.
代码摘录:
wchar_t wzsPath[MAX_PATH];
wchar_t wszProxyUrl[INTERNET_MAX_URL_LENGTH];
SHGetFolderPath ( NULL, CSIDL_APPDATA | CSIDL_FLAG_CREATE, NULL, 0, wszPath );
// Construct Pac file path. – %appdata%\MyAppFolder\redirect.pac
StringCbPrintf (wszProxyUrl, sizeof(wszProxyUrl),
L"file://%s\\MyAppFolder\\redirect.pac", wszPath );
INTERNET_PER_CONN_OPTION_LIST *optionList = 0;
optionList->pOptions[INDEX].Value.pszValue = wszPath;
InternetSetOption ( NULL, INTERNET_OPTION_PER_CONNECTION_OPTION,
optionList, sizeof(INTERNET_PER_CONN_OPTION_LIST) );
问题是InternetSetOption设置的路径在Registry位置不正确。
例如,字符串“TestÖ”在注册表中设置为“TestÖ”。 IE9 在浏览器中设置文本,但没有任何帮助。 IE10 在注册表中设置垃圾值。 这会导致网络访问中断。
【问题讨论】:
-
ASCII 字符的值在 0 到 127 之间。显然 153、154 和 142 不是 ASCII 的一部分。就目前而言,您的问题不是问题,因为事实都是错误的。更重要的是,您没有给我们任何代码,以便我们可以实际计算出这些值的来源。
-
谢谢大卫。我被link Extended ASCII 部分难住了。虽然在控制台上打印需要这个(扩展 ascii 值),但在 MessageBox/Debug String 中打印字符会读取 html 代码页值。
-
我会尽快添加一些有意义的代码摘录。
-
Windows 不使用那个特定的扩展 ascii 表。本机 Windows 编码是 UTF-16 Unicode。调用 Windows API 的 Unicode 版本就可以了。
标签: c winapi character-encoding special-characters wininet