php - fwrite() 和 UTF8

标签 php utf-8 fwrite

我正在使用 php fwrite() 创建一个文件,我知道我所有的数据都是 UTF8 格式(我已经对此进行了广泛的测试 - 当将数据保存到数据库并在正常网页上输出时,一切正常并报告为 utf8。) , 但我被告知我正在输出的文件包含非 utf8 数据 :( bash (CentOS) 中是否有检查文件格式的命令?

当使用 vim 时,它显示的内容为:

Donâ~@~Yt do anything .... Itâ~@~Ys a great site with everything....Weâ~@~Yve only just launched/

任何帮助将不胜感激:确认文件是 UTF8 或如何将 utf8 内容写入文件。

更新

为了阐明我如何知道我有 UTF8 格式的数据,我做了以下操作:

  1. 保存数据时DB设置为utf8
  2. 我先运行这个数据库:

    $enc = mb_detect_encoding($data);

    $data = mb_convert_encoding($data, "UTF-8", $enc);

  3. 就在我运行 fwrite 之前,我检查了数据 请注意每条数据都返回“IS utf-8”

    if (strlen($data)==mb_strlen($data, 'UTF-8')) print 'NOT UTF-8'; 否则打印 'IS utf-8';

谢谢!

最佳答案

如果您知道数据是 UTF8 格式,那么您想要设置 header 。

我写了一个解决方案来回答另一个问题。

解决方案如下:由于UTF-8字节顺序标记是\xef\xbb\xbf,我们应该将它添加到文档的头部。

<?php
function writeStringToFile($file, $string){
    $f=fopen($file, "wb");
    $file="\xEF\xBB\xBF".$file; // this is what makes the magic
    fputs($f, $string);
    fclose($f);
}
?>

您可以根据您的代码调整它,基本上您只是想确保您编写的是 UTF8 文件(正如您所说,您知道您的内容是 UTF8 编码的)。

关于php - fwrite() 和 UTF8,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/6336586/

相关文章:

c++:如何将任何文件读入std::string

c - 如何检测 utf8 中使用的字母表?

php - 删除最后一项的逗号。在 PHP 中使用 fwrite

php - 使用 fwrite() 写入文件时如何将一页中的变量包含在另一页中?

c - 在 C 中将结构附加到文件时出现问题

PHP 似乎不能很好地处理 XML 字符串?

php - SQLite 文件大小在删除表后仍然没有改变

php - 使用固定顺序的递归从 MySQL 数据库创建嵌套页面列表

php - 如何使用 PHP 脚本转换 CSV 文件

php - 为用户输入创建 PHP 页面和弹出窗口时出现 Ajax 问题