鱼C论坛

 找回密码
 立即注册
查看: 1007|回复: 10

[已解决]疑问求助,谢谢

[复制链接]
发表于 2020-5-17 21:04:20 | 显示全部楼层 |阅读模式

马上注册,结交更多好友,享用更多功能^_^

您需要 登录 才可以下载或查看,没有账号?立即注册

x
请问:
为什么系统默认的编码方式(比如GBK)和其.txt文件的存储编码方式(不通过Python存储的话,只有ANSI与utf)不一样(甚至都没有GBK的)?
难道.txt本身不算系统文件?
最佳答案
2020-5-17 21:10:09

系统都是编译为汇编代码 除了程序内部的文本没法编译成汇编而转换为指定文本编码 你指的是文本编码还有环境编码吧
windows的国际化编码默认使用utf16le方案,这也是windows本身的默认locale编码,无法修改为utf8 除非修改windows处理程序内部文本的源代码
windows还有一个编码是本地化locale编码 如果使用非utf16le编码它就会用这套本地化编码去读程序文本信息.
utf16le是为了提高效率,因为这个方案是固定2字节 不像utf8一样1-3可变,而且是倒着排的迎合cpu,据说cpu也是倒着读
但一些本地化的程序没有兼容意识 不使用utf16le编码而使用的是gbk等本地编码,导致拿到其它locale的机器上乱码.这个就没办法了,要想更改只能更改程序内部的文本编码 怎么改我也不清楚.或者用相关的工具启动程序虚拟它的本地locale.
HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Control\Nls\Language
"Default"=""
HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Control\Nls\Locale
"(Default)"=""
只能修改本地locale不能修改windows默认locale,而且默认的locale是根本没必要修改的,因为默认的locale就是为了实现所有字符在同一套编码下.
这个键值不全 好像还有几个 你可以自己找找我只能帮到这了 最好直接修改注册表 intl面板有bug 从那修改会带来莫名错误
804简体中文,404繁体中文,409英文 其它charset代码你可以自己查e799bee5baa6e997aee7ad94e58685e5aeb931333262363130
改这个很无聊 也没用 默认编码没必要改 非utf编码你改了也没用,windows的界面程序还依赖二进制mui语言文件,不如装语言包.否则在日文韩文系统下改了本地locale,系统自带工具的界面还是非中文


以上是百度的结果

1234.png
txt文件的编码可以设置的,和系统一致不一致没什么关系

如果帮助到你~就设置最佳吧~
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复

使用道具 举报

发表于 2020-5-17 21:08:25 | 显示全部楼层
.txt是系统文件,系统存储格式不是UTF-8,所以不兼容
如果帮到你了,就设成最佳吧
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2020-5-17 21:10:09 | 显示全部楼层    本楼为最佳答案   

系统都是编译为汇编代码 除了程序内部的文本没法编译成汇编而转换为指定文本编码 你指的是文本编码还有环境编码吧
windows的国际化编码默认使用utf16le方案,这也是windows本身的默认locale编码,无法修改为utf8 除非修改windows处理程序内部文本的源代码
windows还有一个编码是本地化locale编码 如果使用非utf16le编码它就会用这套本地化编码去读程序文本信息.
utf16le是为了提高效率,因为这个方案是固定2字节 不像utf8一样1-3可变,而且是倒着排的迎合cpu,据说cpu也是倒着读
但一些本地化的程序没有兼容意识 不使用utf16le编码而使用的是gbk等本地编码,导致拿到其它locale的机器上乱码.这个就没办法了,要想更改只能更改程序内部的文本编码 怎么改我也不清楚.或者用相关的工具启动程序虚拟它的本地locale.
HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Control\Nls\Language
"Default"=""
HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Control\Nls\Locale
"(Default)"=""
只能修改本地locale不能修改windows默认locale,而且默认的locale是根本没必要修改的,因为默认的locale就是为了实现所有字符在同一套编码下.
这个键值不全 好像还有几个 你可以自己找找我只能帮到这了 最好直接修改注册表 intl面板有bug 从那修改会带来莫名错误
804简体中文,404繁体中文,409英文 其它charset代码你可以自己查e799bee5baa6e997aee7ad94e58685e5aeb931333262363130
改这个很无聊 也没用 默认编码没必要改 非utf编码你改了也没用,windows的界面程序还依赖二进制mui语言文件,不如装语言包.否则在日文韩文系统下改了本地locale,系统自带工具的界面还是非中文


以上是百度的结果

1234.png
txt文件的编码可以设置的,和系统一致不一致没什么关系

如果帮助到你~就设置最佳吧~
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 1 反对 0

使用道具 举报

 楼主| 发表于 2020-5-17 21:12:07 | 显示全部楼层

图片下方编码

本帖最后由 兰竹皋 于 2020-5-17 21:13 编辑

图片下方编码
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2020-5-17 21:22:35 | 显示全部楼层
焦健鬼 发表于 2020-5-17 21:08
.txt是系统文件,系统存储格式不是UTF-8,所以不兼容
如果帮到你了,就设成最佳吧

我觉得你在扯
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

 楼主| 发表于 2020-5-17 21:27:48 | 显示全部楼层
抱歉,感觉还是不对啊,毕竟我电脑现在的locale编码是GBK而不是utf-16
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

 楼主| 发表于 2020-5-17 21:29:09 | 显示全部楼层
额,,,鲁莽了
新人问问,怎么删帖,怎么取消最佳答案。。。
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2020-5-17 21:31:47 | 显示全部楼层
兰竹皋 发表于 2020-5-17 21:29
额,,,鲁莽了
新人问问,怎么删帖,怎么取消最佳答案。。。

emmm  好像是无法取消的,删帖只有管理员可以删除
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2020-5-17 21:35:04 | 显示全部楼层
兰竹皋 发表于 2020-5-17 21:29
额,,,鲁莽了
新人问问,怎么删帖,怎么取消最佳答案。。。

https://baike.baidu.com/item/%E7%BC%96%E7%A0%81/80092?fr=aladdin

看百度百科吧
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

 楼主| 发表于 2020-5-17 21:46:16 | 显示全部楼层
谢谢
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复

使用道具 举报

发表于 2020-5-17 22:36:09 | 显示全部楼层
    首先说说一下ANSI和GBK的关系,ANSI是个大容器,装的简体中文就是GBK,装的繁体中文就是BIG5,所以你在windows自带的文本编辑器里看到的ANSI实际上就是GBK,实际上在windows7之前的系统,文本文件储存的默认格式其实是ANSI,也就是GBK码,在Windows10系统里,为了全球大一统,改为默认格式是新的UTF码了。
    再说Python其实是支持多种编码的,encoding后面可以填写的各种编码有几十种,当然对于我们来说,GBK和UTF-8是最常见的两种,python已经快三十年了,早期默认支持ANSI,所以为了代码的兼容性,到现在都是默认使用ANSi,使用其他编码要额外指定,但是代码文件本身,也就是.py文件,从python3之后已经转为UTF-8来保存了。
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 1 反对 0

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

小黑屋|手机版|Archiver|鱼C工作室 ( 粤ICP备18085999号-1 | 粤公网安备 44051102000585号)

GMT+8, 2025-2-1 21:44

Powered by Discuz! X3.4

© 2001-2023 Discuz! Team.

快速回复 返回顶部 返回列表