杂七杂八技术
CSDN 文章保存
centos 防火墙
linux 指令结果多页处置
Centos7 环境安装后的常见问题
BitLocker 加密U盘防止丢失造成信息泄露
百度网盘-无响应,下载无反应,响应速度极慢,卡顿严重问题解决方案
Ubuntu 虚拟机 VMWare 相关问题
查找占用 U 盘的进程
Doh 和 Dot
Windows 最近资源管理器卡死现象处置
Ubuntu 换源
Ubuntu 查看端口占用进程并彻底杀死进程
CDN 和 DCDN 的一些区别
VS2022 的一些问题解决
windows server禁止自动更新
正则表达式
Anaconda 完全卸载
URI穿透被我误会的一个点
标记 Anaconda 换源 conda pip
针对24年以后docker换源无效的问题
FTP和FTPS都无法使用怎么办?
Windows/Ubuntu安装talib
python 正则库匹配一个注意点
Ubuntu 下 ping baidu.com 出现 ping: baidu.com: Temporary failure in name resolution
微软输入法常用词保存解析
本文档使用 MrDoc 发布
-
+
首页
微软输入法常用词保存解析
- 非原创,取自 > https://mp.weixin.qq.com/s/3f1nB09TUju-uuGXVlOQgA - 路径 ``` C:\Users\用户名\AppData\Roaming\Microsoft\InputMethod\Chs 或 %USERPROFILE%\AppData\Roaming\Microsoft\InputMethod\Chs 是 Windows 系统中用于存储微软拼音输入法相关数据的文件夹 ``` - 两个是ChsPinyinIH.dat和ChsPinyinUDL.datChsPinyinIH.dat该文件通常存储微软拼音输入法的**输入历史记录**。它记录了用户输入过的词汇、短语等信息,以便输入法能够根据用户习惯提供更准确的联想和预测 - ChsPinyinUDL.dat该文件通常存储微软拼音输入法的**用户自定义词典**,这两个是用户下的两个dat,这里面会记录用户长期输入的文字,需要通过代码编写进行解码,尝试使用 GBK 或 UTF-16 解码因为要显示中文,所以这是我们需要的通过读取后,我们得到这里面的常用词汇。 ```python import sys import os import platform import pypinyin def str2sysstr(strout): sysstr = platform.system() if (sysstr == "Windows"): return strout.encode("gbk") else: return strout.encode("utf-8") if __name__ == '__main__': if len(sys.argv) == 2: user_word_file = sys.argv[1] else: user_word_file = os.environ['USERPROFILE'] + "\AppData\Roaming\Microsoft\InputMethod\Chs\ChsPinyinUDL.dat" if not os.path.exists(user_word_file): print("file:", user_word_file, "not exist\n\n") print("use example") print("user_word_exporter.exe") print(" : paser %USERPROFILE%\AppData\Roaming\Microsoft\InputMethod\Chs\ChsPinyinUDL.dat") print("user_word_exporter.exe dat_file_name") print(" : paser dat_file_name") sys.exit(1) fp = open(user_word_file, "rb") userword = open("user_word_microsoft_pinyin.txt", "at") data = fp.read() cnt = int.from_bytes(data[12:16], byteorder='little', signed=False) user_word_base = 0x2400 for i in range(cnt): cur_idx = user_word_base + i * 60 word_len = int.from_bytes(data[cur_idx + 10:cur_idx + 11], byteorder='little', signed=False) word = data[cur_idx + 12: cur_idx + 12 + word_len * 2].decode("utf-16") pinyin_str = '\t' pinyin_list = pypinyin.pinyin(word, style=pypinyin.NORMAL) for i, py in enumerate(pinyin_list): pinyin_str += py[0] if i + 1 != word_len: pinyin_str += ' ' one_line = word + pinyin_str + '\t1' print(word + pinyin_str + '\t1') userword.write(one_line + "\n") fp.close() userword.close() ```
别卷了
2025年1月6日 18:04
转发文档
收藏文档
上一篇
下一篇
手机扫码
复制链接
手机扫一扫转发分享
复制链接
Markdown文件
分享
链接
类型
密码
更新密码