php网页抓取乱码(Linux程序不会乱码的根源是什么?如何使程序初始化乱码)

优采云 发布时间: 2022-04-09 13:30

  php网页抓取乱码(Linux程序不会乱码的根源是什么?如何使程序初始化乱码)

  乱码的来源:将源代码文件(源字符集)编译/链接生成可执行文件(执行字符集),最后程序在实际环境中运行(运行环境编码)。在此过程中,如果出现字符集不匹配的情况,最终无法显示预期的文本信息,甚至会产生乱码。

  综上所述,为了让程序不乱码,必须满足:

  代码相关

  一般为了在程序中支持国际化,在程序初始化时,将locale设置为系统配置的Native ANSI字符集,即执行:setlocale(LC_ALL, "")。

  可以查看文件编码格式:

  :file main.cc

main.cc: C++ source text, UTF-8 Unicode text

  GCC的源字符集和执行字符集默认都是UTF-8编码的,也就是说GCC默认按照UTF-8解析源代码,编译后的执行字符集也是UTF-8。当然 GCC 也提供了编译选项来改变默认值:

  -finput-charset=charset 用于指定源码字符集

-fexec-charset=charset 用于指定执行字符集

  另一个参数是:

  默认情况下,在 Windows 平台的 gcc 下,宽字符串常量的每个字符都是 16 位 UTF-16 类型。在 Linux 平台上,宽字符串常量的每个字符都是 32 位 UTF-32 类型。-fwide-exec-charset=charset 这个参数可以改变宽字符串常量的类型。比如在x86机器环境下,在Linux操作系统下,要将诸如L“汉字”编译保存为UTF-16字符串,可以使用-fwide-exec-charset=UTF-16LE。

  控制台查看代码:

  :locale

LANG="zh_CN.UTF-8"

LC_COLLATE="zh_CN.UTF-8"

LC_CTYPE="zh_CN.UTF-8"

LC_MESSAGES="zh_CN.UTF-8"

LC_MONETARY="zh_CN.UTF-8"

LC_NUMERIC="zh_CN.UTF-8"

LC_TIME="zh_CN.UTF-8"

LC_ALL=

  参考

0 个评论

要回复文章请先登录注册


官方客服QQ群

微信人工客服

QQ人工客服


线