PHP:向文件读取和写入数据(带有特殊字符)的问题

时间:2013-09-23 06:19:12

标签: php utf-8 special-characters json

我遇到了将数据(带有特殊字符)写入文件的问题。

我正在做这样的事情:

//Writing data..
<?php
   header('Content-Type: text/html; charset=utf-8');

   $file = 'filename.db';
   $data = 'Some string with special characters';

   //Writing to the file..
   @file_put_contents($file, json_encode($data));

?>

这很好用。 当我在Notepad ++中打开db文件时,数据是正确的。 特殊字符也可以正确存储:

 //Reading data..
 <?php
   header('Content-Type: text/html; charset=utf-8');

   $file = 'filename.db';

   //Reading from the file..
   $data = file_get_contents($file);
   $data = json_decode(utf8_encode(stripslashes($data)));

   echo $data;

 ?>

这会将特殊字符显示为“????”或者有时像“u00cf”或其他一些角色。

出了什么问题,在哪里?

任何帮助将不胜感激, 感谢。

2 个答案:

答案 0 :(得分:1)

  1. 如果您不存储数组或其他复杂数据结构,则不需要JSON。
  2. 从文件中读取时,为什么以上帝的名义通过剥离斜杠并通过utf8_encode运行它来误导数据?这就是破坏JSON格式从而破坏你的数据的原因。
  3. 只需将原始字符串写入文件并按原样读回来,完成!

    $string = 'ユーティーエッフエイト';
    file_put_contents('file.txt', $string);
    $string = file_get_contents('file.txt');
    

    你不需要做什么。

答案 1 :(得分:0)

在数据阅读脚本中,尝试:

  

$ data = json_decode(mb_convert_encoding(stripslashes($ data),   “UTF-8”));