【发布时间】:2011-09-20 19:45:18
【问题描述】:
我正在为我正在开发的网站的管理部分构建数据导入工具。数据是法语和英语的,并且包含许多重音字符。每当我尝试上传文件、解析数据并将其存储在我的 MySQL 数据库中时,重音符号都会被替换为“?”。
我有包含数据的文本文件(字符集是 iso-8859-1),我使用 CodeIgniter 的文件上传库上传到我的服务器。然后我用 PHP 读取文件。
我的代码是这样的:
$this->upload->do_upload()
$data = array('upload_data' => $this->upload->data());
$fileHandle = fopen($data['upload_data']['full_path'], "r");
while (($line = fgets($fileHandle)) !== false) {
echo $line;
}
这会产生用“?”替换重音的行。其他一切都是正确的。
如果我通过 FTP 从服务器下载上传的文件,字符集仍然是 iso-8850-1,但差异显示文件已更改。但是,如果我在 TextEdit 中打开文件,它会正确显示。
我尝试使用 PHP 的 stream_encoding 方法将我的文件流显式设置为 iso-8859-1,但我的 PHP 版本没有该方法。
在想法用尽后,我尝试将字符串包装在 utf8_encode 和 utf8_decode 中。都没有用。
如果有人对我可以尝试的事情有任何建议,我将非常感激。
【问题讨论】:
标签: php codeigniter file-upload character-encoding diacritics