我无法弄清楚我做错了什么.我从数据库中获取文件内容.当我回复内容时,一切都显示得很好,当我将它写入文件(.html)时,它会中断.我已经尝试过iconv和其他一些解决方案,但是我只是不明白我应该为第一个参数添加什么,我尝试过空白,但这也没有用.我认为它是以UTF-8的形式出来的,如果它正确回应的话.卡住了一会儿,没有太多运气.

function file($fileName, $content) {

if (!file_exists("out/".$fileName)) {

$file_handle = fopen(DOCROOT . "out/".$fileName, "wb") or die("can't open file");

fwrite($file_handle, iconv('UTF-8', 'UTF-8', $content));

fclose($file_handle);

return TRUE;

} else {

return FALSE;

}

}

html文件的来源看起来像.

像这样出来的DB:

Текущая стабильная версия CMS

像这样进入文件

Ð¢ÐµÐºÑƒÑ‰Ð°Ñ ÑÑ‚Ð°Ð±Ð¸Ð»ÑŒÐ½Ð°Ñ Ð²ÐµÑ€ÑÐ¸Ñ CMS

编辑:

原来问题的根源是Apache不正确地提供文件.添加

AddDefaultCharset utf-8

到我的.htaccess文件修复它.浪费时间……至少我学到了一些东西.

解决方法:

编辑:数据库编码似乎不是这里的问题,因此这部分答案仅保留供参考

I assume it’s coming out of the DB as UTF-8

这很可能是您的问题,您使用的数据库类型是什么?您是否设置了数据库,表,连接和传输的字符编码和排序规则详细信息.

如果我冒险猜测,我会说你的表是MySQL,你的数据库/表/列的MySQL排序规则应该都是UTF8_general_ci?

但是,出于某种原因,MySQL UTF8实际上不是UTF8,因为它将数据存储在3位而不是4位,因此无法存储整个UTF-8字符集,请参阅UTF-8 all the way through.

因此,您需要浏览MySQL上的每个表格列,并将其从UTF8_更改为UTF8mb4_(注意:自MySQL 5.5.3起),它是UTF8_multibyte_4,涵盖整个UTF-8字符谱.

此外,如果您对数据字符串执行任何PHP工作,请注意您应该使用mb_ PHP函数进行多字节编码.

最后,您需要为数据库指定连接字符集,不要使用默认值运行,因为它几乎肯定不是UTF8mb4,因此您可以在数据库中拥有正确的数据,但随后重新打包该数据作为3位UTF8之前被另一端用PHP视为4位UTF8.

希望这会有所帮助,如果您的数据库不是MySQL,请告诉我们它是什么!

编辑:

function file($fileName, $content) {

if (!file_exists("out/".$fileName)) {

$file_handle = fopen(DOCROOT . "out/".$fileName, "wb") or die("can't open file");

fwrite($file_handle, iconv('UTF-8', 'UTF-8', $content));

fclose($file_handle);

return TRUE;

} else {

return FALSE;

}

}

>你的$file_handle正在尝试在if语句中打开一个文件,该文件只有在文件不存在时才会运行.

>你的iconv在这里毫无价值,从“utf-8”变为呃“utf-8”.字符检测非常偶然,并且程序难以正确执行,因此通常建议不要尝试计算/猜测编码它的字符,你需要知道它是什么并告诉函数它是什么.

标签:php,utf-8,fwrite

来源: https://codeday.me/bug/20190706/1397931.html

fwrite php utf8,坚持通过PHP的fwrite编写UTF-8文件相关推荐

  1. fwrite函数Matlab,fread和fwrite函数,C语言fread和fwrite函数详解

    对文件格式化读写函数 fprintf 与 fscanf 而言,尽管它可以从磁盘文件中读写任何类型的文件,即读写的文件类型可以是文本文件.二进制文件,也可以是其他形式的文件.但是,对二进制文件的读写来说 ...

  2. 【fread/fwrite】C语言API之fread/fwrite函数详解

    文章目录 1.函数定义及原型 2.函数功能 3.函数示例 1.函数定义及原型 #include <stdio.h> size_t fread(void *ptr, size_t size, ...

  3. eclipse 源码设置UTF-8 (eclipse可以为JSP HTML 等各种文件不同编码格式设置) 在windows - preference- general-workspace

    eclipse  源码设置UTF-8  (eclipse可以为JSP  HTML 等各种文件不同编码格式设置) 在windows - preference- general-workspace htt ...

  4. 解决java以UTF-8输出中文时,Excel打开多语言文件乱码但是记事本打开却正常的问题

    解决java以UTF-8输出中文时,Excel打开多语言文件乱码但是记事本打开却正常的问题 public static boolean exportCsv(File file, List dataLi ...

  5. android mp3 lrc歌词文件utf-8歌词显示为乱码,Android读取本地json文件的方法(解决显示乱码问题)...

    本文实例讲述了Android读取本地json文件的方法.分享给大家供大家参考,具体如下: 1.读取本地JSON ,但是显示汉字乱码 public static String readLocalJson ...

  6. 【Spring框架】全集详解

    文章目录 ClassPathXmlApplicationContext工作原理 01.IOC:控制反转 02.什么是bean 03.DI注入以及c.p命名空间 ```p命名空间.c命名空间``` `` ...

  7. 【Spring第十篇】Spring整合Mybatis

    文章目录 1.配置数据源文件:在resources目录下创建db.properties 2.编写mybatis-config.xml文件 3.编写spring-dao.xml配置文件 4.将mybat ...

  8. 《Python从小白到大牛》第2篇 开发环境搭建

    <Python从小白到大牛>已经上市! 开发环境搭建 <论语•魏灵公>曰:"工欲善其事,必先利其器",做好一件事,准备工作非常重要.在开始学习Python技 ...

  9. Day68-基于CoolMeeting项目开发的ssm整合流程

    Day68-基于CoolMeeting项目开发的ssm整合流程 一.创建数据库,执行一下SQL脚本. /* SQLyog Ultimate v12.08 (32 bit) MySQL - 8.0.18 ...

最新文章

  1. [原创].NET 分布式架构开发实战五 Framework改进篇
  2. 编写脚本隐藏托盘图标_【Electron-Playground系列】托盘篇
  3. boost::spirit模块使用 phoenix 对逗号分隔的数字列表求和的解析器
  4. 发送临时文件被服务器拒绝,临时会话说服务器拒绝了您发送离线文件的请求 - 卡饭网...
  5. HTTP状态码对照表(全部状态_建议收藏)
  6. python中类的方法里面变量前加self与不加self的区别
  7. P3279-[SCOI2013]密码【Manacher】
  8. 【OS学习笔记】六 实模式:编写主引导扇区代码
  9. 将下图的nfa确定化为dfa_想要确定一个宝石矿物种,必须要确定这两大因素
  10. mac上使用终端生成RSA公钥和密钥
  11. MapReduce实现大矩阵乘法
  12. android sdk模拟器中文版,安卓sdk自带模拟器的使用
  13. 读《PROSOSPEECH: ENHANCING PROSODY WITH QUANTIZED VECTOR PRE-TRAINING IN TEXT-TO-SPEECH》
  14. 计算机主机的输出设备,计算机的输出设备有哪些呢?
  15. causalml安装记录
  16. PHP语言弹窗图片,render函数生成图片弹窗的代码示例
  17. downwell什么意思_downwelling_downwelling是什么意思翻译
  18. 【基础篇】SpringBoot 自定义 Banner
  19. 20164305 徐广皓《网络对抗》Exp9 Web安全基础实践
  20. 激光雷达(LiDAR)辐射对身体有害吗?

热门文章

  1. Gensim训练维基百科词向量模型(含代码)
  2. 性能测试中怎么检测CPU情况
  3. 【时间序列分析】差分运算及延迟算子的性质
  4. 共克时艰|链下思考系列之一区块链能做点什么
  5. 无人驾驶技术的突破与挑战
  6. 64 ---- 两平面的位置关系
  7. DCloud 5+应用之plus.runtime.install无响应
  8. 最小相位滤波器 matlab,基于MATLAB最小相位数字滤波器的设计方法研究
  9. 【 无线网络技术 】实验一、构建无线网络实验环境
  10. 装饰模式 - Unity