欢迎您访问程序员文章站本站旨在为大家提供分享程序员计算机编程知识!
您现在的位置是: 首页  >  后端开发

求教 把包含汉字的数组输出到文件,其他地方调用读取为数组

程序员文章站 2022-05-30 10:27:12
...
求教 把包含汉字的数组输出到文件,其他地方调用读取为数组
这里要注意的是 需要考虑编码问题,我想要的是无论是在GBK 还是UTF8的汉字都能正常存取
之前在utf8下 用 json 正常存取
但是换到GBK下就不行
首先这里说明下 是GBK还是UTF8 是未知的 也就是说要在这两种编码下都能运行的代码。而不用再手动修改


回复讨论(解决方案)

易入难出是大原则
你这里显然是管“出”,所以是不应该以不定编码输出的,而应该确定只输出一种编码
至于你的数据来源与预定输出编码不符就转换好了

问一下:其他地方调用读取为数组
是指什么?
直接文件函数操作?
include?
函数调用?

把数据返回做成返回json数据的接口不就行了吗?

求教 把包含汉字的数组输出到文件,其他地方调用读取为数组
这里要注意的是 需要考虑编码问题,我想要的是无论是在GBK 还是UTF8的汉字都能正常存取
之前在utf8下 用 json 正常存取
但是换到GBK下就不行
首先这里说明下 是GBK还是UTF8 是未知的 也就是说要在这两种编码下都能运行的代码。而不用再手动修改

为什么GBK不行

json最好用UTF-8,否则被javascript使用后,中文可能乱码。

把数据返回做成返回json数据的接口不就行了吗? 我当然知道用JSON就行 问题是GBK JSON不支持中文 如果用icov进行编码转换 又不知道当前是GBK 还是UTF8

关键在于其他程序如何读?

关键在于其他程序如何读? 我写的是一个Discuz 的插件 由于dz有多个编码的 因此不知道用户使用的是什么编码的 所以保存的时候要根据用户的编码进行保存

既然是为 Discuz 写插件,那么就可以从 Discuz 中获取编码信息
config/config_global_default.php 中不是已经设置了使用的编码了吗?
$_config['db']['1']['dbcharset'] = '...';// 数据库字符集
$_config['output']['charset'] = '...';// 页面字符集

很难想象,写插件不利用系统已有的环境设置

写入到文件中的数据,最好用 var_export 产生的结果,以 php 代码形式写入
这样在重新使用时,用 include 就可读回了