fwrite php utf8,坚持通过PHP的fwrite编写UTF-8文件
我无法弄清楚我做错了什么.我从数据库中获取文件内容.当我回复内容时,一切都显示得很好,当我将它写入文件(.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文件相关推荐
- fwrite函数Matlab,fread和fwrite函数,C语言fread和fwrite函数详解
对文件格式化读写函数 fprintf 与 fscanf 而言,尽管它可以从磁盘文件中读写任何类型的文件,即读写的文件类型可以是文本文件.二进制文件,也可以是其他形式的文件.但是,对二进制文件的读写来说 ...
- 【fread/fwrite】C语言API之fread/fwrite函数详解
文章目录 1.函数定义及原型 2.函数功能 3.函数示例 1.函数定义及原型 #include <stdio.h> size_t fread(void *ptr, size_t size, ...
- eclipse 源码设置UTF-8 (eclipse可以为JSP HTML 等各种文件不同编码格式设置) 在windows - preference- general-workspace
eclipse 源码设置UTF-8 (eclipse可以为JSP HTML 等各种文件不同编码格式设置) 在windows - preference- general-workspace htt ...
- 解决java以UTF-8输出中文时,Excel打开多语言文件乱码但是记事本打开却正常的问题
解决java以UTF-8输出中文时,Excel打开多语言文件乱码但是记事本打开却正常的问题 public static boolean exportCsv(File file, List dataLi ...
- android mp3 lrc歌词文件utf-8歌词显示为乱码,Android读取本地json文件的方法(解决显示乱码问题)...
本文实例讲述了Android读取本地json文件的方法.分享给大家供大家参考,具体如下: 1.读取本地JSON ,但是显示汉字乱码 public static String readLocalJson ...
- 【Spring框架】全集详解
文章目录 ClassPathXmlApplicationContext工作原理 01.IOC:控制反转 02.什么是bean 03.DI注入以及c.p命名空间 ```p命名空间.c命名空间``` `` ...
- 【Spring第十篇】Spring整合Mybatis
文章目录 1.配置数据源文件:在resources目录下创建db.properties 2.编写mybatis-config.xml文件 3.编写spring-dao.xml配置文件 4.将mybat ...
- 《Python从小白到大牛》第2篇 开发环境搭建
<Python从小白到大牛>已经上市! 开发环境搭建 <论语•魏灵公>曰:"工欲善其事,必先利其器",做好一件事,准备工作非常重要.在开始学习Python技 ...
- Day68-基于CoolMeeting项目开发的ssm整合流程
Day68-基于CoolMeeting项目开发的ssm整合流程 一.创建数据库,执行一下SQL脚本. /* SQLyog Ultimate v12.08 (32 bit) MySQL - 8.0.18 ...
最新文章
- [原创].NET 分布式架构开发实战五 Framework改进篇
- 编写脚本隐藏托盘图标_【Electron-Playground系列】托盘篇
- boost::spirit模块使用 phoenix 对逗号分隔的数字列表求和的解析器
- 发送临时文件被服务器拒绝,临时会话说服务器拒绝了您发送离线文件的请求 - 卡饭网...
- HTTP状态码对照表(全部状态_建议收藏)
- python中类的方法里面变量前加self与不加self的区别
- P3279-[SCOI2013]密码【Manacher】
- 【OS学习笔记】六 实模式:编写主引导扇区代码
- 将下图的nfa确定化为dfa_想要确定一个宝石矿物种,必须要确定这两大因素
- mac上使用终端生成RSA公钥和密钥
- MapReduce实现大矩阵乘法
- android sdk模拟器中文版,安卓sdk自带模拟器的使用
- 读《PROSOSPEECH: ENHANCING PROSODY WITH QUANTIZED VECTOR PRE-TRAINING IN TEXT-TO-SPEECH》
- 计算机主机的输出设备,计算机的输出设备有哪些呢?
- causalml安装记录
- PHP语言弹窗图片,render函数生成图片弹窗的代码示例
- downwell什么意思_downwelling_downwelling是什么意思翻译
- 【基础篇】SpringBoot 自定义 Banner
- 20164305 徐广皓《网络对抗》Exp9 Web安全基础实践
- 激光雷达(LiDAR)辐射对身体有害吗?