-
Notifications
You must be signed in to change notification settings - Fork 34
New issue
Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.
By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.
Already on GitHub? Sign in to your account
编码规范不统一的现状与解决方案 #193
Comments
@HaujetZhao 早先遇到过一个编码问题,见前文:都市传说: "部分"中文出现乱码 不妨探讨一下各种原因和可能的解决方案。比如,是由中文字符串还是中文命名标识符引起的、是否需要控制台编码设置,以及如果无法规避的话是否可以开发相关工具链解决(编辑器、运行环境等等)。 |
无法解决,这是历史问题。在文件中使用中文变量命名,没问题。 但是输出中文字符串、使用中文路径、读取文件有含有中文的元数据,就有问题。 有绕弯子的办法,使用第三方库进行编码转换。exiftool exiv2 开发者都搞了,说太难,搞不动。 编译器是要把常量处理成字节码的,如何处理,已经由源码编码决定了,还能有什么办法?只能搞中间拓展层。有能力搞、搞得出来、搞出来各个系统都能用、搞了别人愿意用,这都是难题。 计算机世界本就是不完美的,只能接受这个设定。 C 和 C++ 都是底层最接近汇编、硬件的,历史包袱很重,对他们不太期待完善的中文处理了。我目前也就敢在 Python 这样的解释语言中肆意用中文。 |
之前ffmpeg打印带有中文的元数据内容也是乱码,后来不知道什么版本起在 |
其时间和精力成本无法普及到大多数程序员所写的程序上。 |
个人认为,技术终归是为需求服务而且不断进步的。用中文的多了,迟早会有辅助或者解决方案出现。IDE的中文补全辅助插件就是个最近的例子。 想当初,上世纪七十年代还有专家认为 ”汉字无法进入电脑“ 呢。 |
编码问题大多是因为程序未使用Unicode API。作者一般可以修改。技术栈太老太封闭确实困难,但C/C++不在此列。C/C++是最底层的,这也就意味着,它要是不支持Unicode,别的程序凭什么支持。 汉字路径,汉字文件名,Dev-C++ 5.11 (minGW GCC 4.9.2) #include <stdio.h>
#include <locale.h>
int main(void) {
setlocale(LC_ALL, "");
wprintf(L"你好");
} |
Windows编码问题比较多
|
|
中文编码,史诗巨坑【 当然如果把范围划定为“易用通行的,写代码用用,但别指望它覆盖一切汉字高级需求的”,则直接unicode。 就是要记住,不要认为unicode能完全解决汉字应用的一切需求,不要认为所有字符串数据必须得用unicode。 既然是这个主题,就把我整的大活也发上来【 http://farter.cn/zzdm 字理组字汉字编码,从头开始的汉字编码 普通软件unicode就罢了,如果要做的是处理人名地名古籍等,可能冒出中华文化博大精深的汉字的软件,记得给未来可能使用别的编码方式留门,比如GB13080-2022,比如big5,比如敝编码【 |
源自 program-in-chinese/team_website#27 :
The text was updated successfully, but these errors were encountered: