ubuntu系统设置所有编码为 gbk
直接调用strftime
strftime(time_buf, 80, "%a, %e %b %G %T %z", p_stime);
输出为
这些乱码是由于将 GBK 编码的字符串当作 latin1 编码解释造成的。
Îå, 18 12Ô 2015 11ʱ19·Ö36Ãë +0800
原因
strftime字符串输出到buf时是按照系统设置的编码格式输出的,ubuntu设置成gbk,输出的字符串就是gbk编码的时间,
两个解决办法:
一、需要设置显示这些文字的工具使用 GBK 编码来解释该输出。
二、调用strftime前,把系统时间设置成想要的编码格式,例如
setlocale(LC_TIME, 'en_US.UTF-8')