我正在尝试编写用于导入CSV文件的PHP脚本。
我正在使用此代码:
<form method="post" enctype="multipart/form-data">
<input type="file" name="f"><br>
<input type="submit" name="submit" value="Submit">
</form>
<?php
$row = 1;
if (($handle = fopen($_FILES['f']['tmp_name'], "r")) !== FALSE) {
while (($data = fgetcsv($handle, 1000, ",")) !== FALSE) {
$data = array_map("utf8_encode", $data); //added
$num = count($data);
// Row
$row++;
for ($c=0; $c < $num; $c++) {
// Column
echo $data[$c] . "<br />\n";
}
}
fclose($handle);
}
?>
脚本有效,但问题在于编码字符。在CSV文件中,内容使用拉脱维亚语,并且显示拉脱维亚字符不正确。
一些拉脱维亚文字示例:
ŠisirseptītaiskāzufotokonkurssLatvijā,turklāt,pēciesūtīto fotogrāfijuskaitatasirarīlielākaisvisāBaltijā。 SAJA fotokonkursāpeiedalījās90autori,kuriiesūtījakopumā1106 fotogrāfiju。 Fotokonkursaapbalvošanaslaikātiksnominētilabākie Latvijaskāzufotogrāfi10dažādāskategorijās:gatavošanās, ceremonija,emocijas,bērni,portrets,jaunaispāris,detaļas, svinības,izšķirošaismirklisungaismasspēles。
这就是我从剧本那里得到的:
ÐisutseptîtaiskâzufotokonkurssLatvijâturklâtpçciesûtîto fotogrâfijuskaitatasirarîlielâkaisvisâBaltijâ。 Ðajâ fotokonkursâpiedalîjâs90autorikuriiesûtîjakopumâ1106 fotogrâfiju。 Fotokonkursapapbalvoðanaslaikâtiksnominçtilabâkie Latvijaskâzufotogrâfi10daþâdâskategorijâs:gatavoðanâs, ceremonija,emocijas,bçrni,portrets,jaunaispris,detaïas, svinîbas,izðíiroðaismirklisungaismasspésles。
当我只做echo 'Some latvian text';
时,它运行正常。所以问题在于csv处理程序。
据我所知,我需要使用带有BOM的UTF8 。但是我怎么能这样做呢?
答案 0 :(得分:1)
如果我说得对,mb_convert_encoding可能正是你要找的。 p>
mb_convert_encoding($data, "UTF-8", "ISO-8859-15");
不确定ISO代码。 也许这会有所帮助:http://webcheatsheet.com/html/character_sets_list.php