2013-09-23 74 views
0

我在读取数据(使用特殊字符)到文件时遇到问题。PHP:读取和写入数据(带有特殊字符)到文件的问题

我做这样的事情:

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

什么问题出在哪里?

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

+1

为什么'utf8_encode'? –

+1

在UTF-8中,值为0xcf的字节是“连续字节”,即多字节序列的尾部的一部分,这表明UTF-8在某些时候不被解释为这样。如果你能提供确切的字符串和文件的确切内容,这将有所帮助,因为“特殊字符”对你来说意味着与我们其他人不同的东西。最后,你的PHP源文件的编码是什么? PHP将字符串视为字节,因此它不关心它是UTF-8还是Latin-1,但像utf8_encode()这样的东西只在预期的输入匹配时才做正确的事情。 –

+1

只需停止不必要地使用stripslashes和utf8_encode搞乱你的数据。 – deceze

回答

1
  1. 如果你不存储阵列或者您不需要JSON等复杂的数据结构。
  2. 从文件中读取时,为什么在上帝的名字中是否通过剥离斜杠并运行它通过utf8_encode来恶化数据?这就是摧毁JSON格式,从而破坏你的数据。

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

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

没有更多的你需要做的。

+0

将尝试它,并让你知道如果工作。 –

+0

如果我想以json格式存储数据,该怎么办?假设我调用了PHP文件来存储数据。我从不同的PHP文件或任何其他平台(如Adobe FLEX)拨打电话。我用JSON格式发送数据。我正在处理复杂的数据结构。那样的话我该怎么办? –

+0

然后'json_encode'和'json_decode'它,**没有任何其他的废话**你做了。 – deceze

0

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

$数据= json_decode(mb_convert_encoding(的stripslashes($数据), “UTF-8”));

+0

请解释投票原因。谢谢。 – anupam

相关问题