Python调用locale.getlocale()报unknown locale: ko-KR错误求助
问题分析与解决
环境信息
- Python 3.9.12(32位)
- Windows 10(32位)
问题现象
执行datetime.datetime.strptime解析时间字符串时抛出ValueError: unknown locale: ko-KR,直接调用locale.getlocale()也触发相同错误:
错误代码及回溯
- 时间解析代码报错:
import datetime dt_str = "2022-09-13 14:23:10" dt = datetime.datetime.strptime(dt_str, "%Y-%m-%d %H:%M:%S")
回溯信息:
Traceback (most recent call last): File "_strptime.py", line 268, in <module> File "_strptime.py", line 182, in __init__ File "_strptime.py", line 69, in __init__ File "_strptime.py", line 28, in _getlang File "locale.py", line 593, in getlocale File "locale.py", line 501, in _parse_localename ValueError: unknown locale: ko-KR
- 检查locale代码报错:
import locale print(locale.getlocale())
回溯信息:
Traceback (most recent call last): File "locale.py", line 593, in getlocale File "locale.py", line 501, in _parse_localename ValueError: unknown locale: ko-KR
原因
- Windows与类Unix系统locale名称格式不兼容:Python的
locale模块在Windows下识别的是系统原生locale名称(如Korean_Korea.949),而非类Unix系统通用的ko-KR格式,直接使用ko-KR会导致解析失败。 - 系统未安装对应语言包:若Windows系统未安装朝鲜语(韩语)语言包,Python无法识别该locale标识。
- 32位Python的locale兼容性限制:32位Python在处理非系统默认locale时,可能存在映射类Unix风格locale名称的兼容性问题。
解决方法
方法1:使用Windows原生locale名称
直接指定Windows格式的韩语locale名称:
import locale # 设置为韩语(韩国)的Windows原生locale locale.setlocale(locale.LC_ALL, 'Korean_Korea.949') # 再执行时间解析 import datetime dt_str = "2022-09-13 14:23:10" dt = datetime.datetime.strptime(dt_str, "%Y-%m-%d %H:%M:%S") print(dt)
方法2:强制使用C locale(规避locale依赖)
如果不需要locale相关的格式化逻辑,直接强制使用C locale跳过locale检查:
import locale locale.setlocale(locale.LC_ALL, 'C') import datetime dt_str = "2022-09-13 14:23:10" dt = datetime.datetime.strptime(dt_str, "%Y-%m-%d %H:%M:%S") print(dt)
方法3:安装系统朝鲜语语言包
若需使用韩语locale,先在Windows系统中安装对应语言包:
- 打开「设置」→「时间和语言」→「语言」→「添加语言」
- 搜索并添加「朝鲜语」,完成安装后重启Python环境
- 之后在Python中执行
locale.setlocale(locale.LC_ALL, '')即可自动识别系统locale
内容的提问来源于stack exchange,提问作者sssbbbaaa
相关产品推荐
相关产品推荐

