php - 编码-解码问题 php (CSV->MySQL)
问题描述
我正在尝试以 CSV 格式为服务器提取数据,处理并存储在 MySQL 数据库中:
当我插入我的数据库时,文本是“Atila%27s+Goonies”我希望它是“Atila's Goonies”
我一直在阅读所有文本编码主题,但我认为我缺少一个非常简单的功能。
我的要求是将此文本作为格式正确(或编码)的字符串存储在数据库中,以便稍后查询并在线显示。数据库列被整理为“utf8_unicode_ci”。我不确定它是否相关,因为如果我想在浏览器上显示,我也无法获得正确的格式。谢谢。
任何帮助,将不胜感激。
我的代码如下:
if (($handle = fopen("alliances.txt", "r")) !== FALSE) {
while (($data = fgetcsv($handle, 1000, ",")) !== FALSE) {
$num = count($data);
$row++;
$alliance_id = $data[0];
$alliance_name = $data[1];
$alliance_points = $data[2];
$alliance_villages = $data[3];
$alliance_members = $data[4];
$alliance_rank = $data[5];
$sql_ia = "insert into alliances (alliance_id,alliance_name, alliance_villages,alliance_members,alliance_rank,timestamp)
values (:alliance_id,:alliance_name, :alliance_villages,:alliance_members,:alliance_rank,:timestamp)";
$st_ia = $DBcon->prepare($sql_ia);
$st_ia->bindParam(':alliance_rank', $alliance_rank,PDO::PARAM_INT);
$st_ia->bindParam(':alliance_id', $alliance_id,PDO::PARAM_INT);
$st_ia->bindParam(':alliance_name',$alliance_name,PDO::PARAM_STR);
$st_ia->bindParam(':alliance_members',$alliance_members,PDO::PARAM_INT);
$st_ia->bindParam(':alliance_villages',$alliance_villages,PDO::PARAM_INT);
$st_ia->bindParam(':timestamp',$timestamp,PDO::PARAM_INT);
$author_name = $ag_row[$agency];
$st_ia->execute();
}
fclose($handle);
}
解决方案
尝试这个。
<?php
$encoded = 'Atila%27s+Goonies';
// Your string is URL encoded. Use urldecode() to decode.
$decoded = urldecode($encoded);
var_dump($decoded); // string(15) "Atila's Goonies"