当前位置:Gxlcms > PHP教程 > 求教把包含汉字的数组输出到文件,其他地方调用读取为数组

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

时间:2021-07-01 10:21:17 帮助过:5人阅读

求教 把包含汉字的数组输出到文件,其他地方调用读取为数组
这里要注意的是 需要考虑编码问题,我想要的是无论是在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 就可读回了

人气教程排行