IIS 10+MediaWiki短URL编码异常问题求助
问题描述
在本地网络的Windows Server 2016(系统语言为韩语)上运行MediaWiki,按官方手册配置短URL后出现以下编码异常问题:
- 问题A:页面名称
대문¹(韩语意为“主页”)通过短URL访问时变为´ë¹®,无法正常访问; - 问题B:指向
媛곴컖的短URL点击后会显示각각²(韩语意为“各自”)的内容,其中媛곴컖是각각的乱码。
完整URL(如http://192.168.0.123/w/index.php?title=%EB%8C%80%EB%AC%B8)可正常使用,仅VisualEditor存在小问题³:会将分类链接替换为完整URL,如Category:Foo变为Category:index.php?title=Foo。
编码异常排查过程
(A) EB 8C 80 EB AC B8 ↓ UTF-8解码 대문 ↓ EUC-KR编码 B4 EB B9 AE ↓ Latin-1解码 ´ë¹® (B) E5 AA 9B EA B3 B4 EC BB 96 ↓ UTF-8解码 媛곴컖 ↓ EUC-KR编码 EA B0 81 EA B0 81 ↓ UTF-8解码 각각
推测URL编解码过程中被错误地用EUC-KR编码处理,但在IIS和MediaWiki中未找到相关设置。
解决方案
1. 强制IIS使用UTF-8处理URL
- 打开IIS管理器,定位到MediaWiki对应站点,进入请求筛选功能;
- 点击右侧功能设置,勾选允许双重转义,确保URL中的UTF-8编码字符能被正确解析;
- 进入站点的**.NET全球化设置,将响应编码**、文件编码以及请求编码的动/静态编码均设置为
UTF-8; - 若使用URL重写模块(短URL依赖该模块),在重写规则的条件中添加
{URL}的匹配规则,确保处理过程中保留UTF-8编码,避免自动转码为EUC-KR。
2. 修正MediaWiki编码配置
- 打开MediaWiki根目录下的
LocalSettings.php,确认并添加以下配置:$wgScriptPath = "/w"; $wgArticlePath = "/$1"; $wgUsePathInfo = true; // 强制全局编码为UTF-8 $wgOutputEncoding = 'UTF-8'; $wgInputEncoding = 'UTF-8'; $wgDBencoding = 'utf8mb4'; // 数据库需支持utf8mb4,旧版utf8可逐步迁移 - 检查
$wgUrlProtocols配置,确保无限制UTF-8字符的处理逻辑; - 清理MediaWiki缓存:删除
cache目录下所有文件,或在后台执行刷新缓存操作。
3. 调整服务器系统区域设置
- 打开Windows Server的区域和语言设置,进入管理标签页;
- 点击更改系统区域设置,勾选Beta版:使用Unicode UTF-8提供全球语言支持,重启服务器生效;
- 确保当前用户的区域设置为韩语(韩国)且编码为UTF-8。
4. 修复VisualEditor的链接问题
- 在
LocalSettings.php中添加以下配置,强制VisualEditor使用短URL格式:$wgVisualEditorUseFullURLs = false; $wgVisualEditorEnableDiffPage = true; - 刷新VisualEditor资源缓存,或重新安装该扩展。
内容的提问来源于stack exchange,提问作者Henry Kwon
相关产品推荐
相关产品推荐

