0

我在将数据(带有特殊字符)读写到文件时遇到问题。

我正在做这样的事情:

//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”或其他一些字符。

出了什么问题,在哪里?

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

4

2 回答 2

1
  1. 如果您不存储数组或其他复杂的数据结构,则不需要 JSON。
  2. 从文件中读取时,为什么以上帝的名义通过剥离斜杠并运行数据来虐待数据utf8_encode?这就是破坏 JSON 格式以及您的数据的原因。

只需将原始字符串写入文件并按原样读回即可,完成!

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

您无需再做任何事情。

于 2013-09-23T06:52:29.110 回答
0

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

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

于 2013-09-23T06:36:43.747 回答