字符编码

本文最后更新于:2 年前

不得不花时间重新理一遍,太乱了

仅个人理解,未经求证,警惕

总览

  • 在C++中直接用 “” 来包裹字符串,它相当于是什么编码?

    • 就是你这个cpp文件的编码,例如用GBK格式编写代码后运行,"strlen("中文")" 的值为4;在utf-8格式下编写运行 这个值就为6
  • 路径字符串用什么编码能正确打开文件?

    • windows下是GBK,因为windows系统是GBK编码的,也就是说,所有的这些路径名,文件名在系统内部都是GBK格式的,要和它们匹配上就要用GBK编码的字符串。
    • 举例:如果我的cpp是utf-8保存的,使用 ifstream fin("中文.txt") 就没法正确打开,因为这个”中文.txt”字符串是utf-8编码的,需要转成GBK。
    • 系统编码无法更改(你当然不能把windows内部所有字符串都转换一遍),只能在涉及到路径字符串时留意,格外转换一遍。
  • 输出乱码了

    • 以最简单的为例:windows下小黑框输出。cout其实也啥都不管,只把字节一个个扔给控制台,控制台采用系统编码方式来翻译成字符,所以一般utf-8格式的cpp直接cout << “中文”都会乱码,控制台有很多办法切换编码方式。
  • 读写文件

    • 它们什么都不管,只管把字节一个个读入或写出,那么你读的文件是什么编码,读到的字符串就是什么编码,写同理。
  • 关于复制粘贴

    • 我理解复制保存的是具体的字符而不是字节流,所以粘贴到哪里去都不会乱码

字符编码
http://www.lxtyin.ac.cn/2022/05/04/2022-05-04-字符编码/
作者
lx_tyin
发布于
2022年5月4日
许可协议