第一次接触 c 应该是在99年的时候,自学了一段时间后因为学不下去果断放弃。
第二次接触 c 应该是在11年的时候,那时我已经在工作中学习和使用 java 差不多8年的时间。11年左右刚好不太忙,就买了一本 c 的经典书籍《The C Programming Language》的中文版《C程序设计语言》,又重新学习了一遍。
过去由于工作中一直用java, 关于字符的处理只用到了 String,不同编码(gbk, utf-8)之间的转换也简单。
当我把《C程序设计语言》看完后,我只知道 char, 就压根不知道 wchar_t 的存在。
后来在用 c 写字符串处理的通用代码时,只知道用 char,差不多三五年后,突然有一天,一个用户向我反应,软件中有个汉字(生僻字)无法显示,汉字变成了【问号 ?】。
我才发现,我走在一条错误的道路上,并且这条道走的有点远,现在想回头很难。
一个代码量在5 - 10万行的项目,现在想把所有 char 改成 wchar_t,感觉好难。牵一发而动全身,稍不留神可能就会产生bug,我现在真的没勇气去改。
---------------------------------------------------------------------------
在此奉劝各位c语言的初学者,如果你写的是中文版的软件项目,建议:
项目的文件编码:UTF-8
项目中关于字符的处理,使用 wchar_t ,不要用 char
---------------------------------------------------------------------------
宽字符wchar_t 与 窄字符char
https://www.cnblogs.com/lanhaicode/p/10574260.html
刨根问底:C++中宽字符类型(wchar_t)的编码一定是Unicode?长度一定是16位?