gpt4 book ai didi

php - 每当使用 £ 时,MySQL 或 PHP 都会附加一个 Â

转载 作者:IT王子 更新时间:2023-10-29 00:37:08 27 4
gpt4 key购买 nike

提供的答案都很棒,我在 Alnitak 答案的评论中提到,我需要查看我的 CSV 生成脚本,因为无论出于何种原因,它都没有输出 UTF-8。

正如正确指出的那样,它输出的是 UTF-8 - Ye Olde Microsoft Excel 存在问题,它没有按照我希望的方式获取编码。

我现有的 CSV 生成类似于:

// Create file and exit;
$filename = $file."_".date("Y-m-d_H-i",time());
header("Content-type: application/vnd.ms-excel");
header("Content-disposition: csv" . date("Y-m-d") . ".csv");
header( "Content-disposition: filename=".$filename.".csv");
echo $csv_output;

现在看起来像:

// Create file and exit;
$filename = $file."_".date("Y-m-d_H-i",time());
header("Content-type: text/csv; charset=ISO-8859-1");
header("Content-disposition: csv" . date("Y-m-d") . ".csv");
header("Content-disposition: filename=".$filename.".csv");

echo iconv('UTF-8', 'ISO-8859-1', $csv_output);

----------------------------------------------- --------

原始问题

嗨,

我有一个收集数据的表单,表单工作正常,但我刚刚注意到,如果有人键入或使用“£”符号,MySQL DB 会以“£”结尾。

不太确定在哪里或如何阻止这种情况发生,需要遵循的代码和数据库信息:

MySQL 详细信息

mysql> SHOW COLUMNS FROM fraud_report;
+--------------+--------------+------+-----+---------+----------------+
| Field | Type | Null | Key | Default | Extra |
+--------------+--------------+------+-----+---------+----------------+
| id | mediumint(9) | | PRI | NULL | auto_increment |
| crm_number | varchar(32) | YES | | NULL | |
| datacash_ref | varchar(32) | YES | | NULL | |
| amount | varchar(32) | YES | | NULL | |
| sales_date | varchar(32) | YES | | NULL | |
| domain | varchar(32) | YES | | NULL | |
| date_added | datetime | YES | | NULL | |
| agent_added | varchar(32) | YES | | NULL | |
+--------------+--------------+------+-----+---------+----------------+
8 rows in set (0.03 sec)

PHP 函数

function    processFraudForm($crm_number, $datacash_ref, $amount, $sales_date, $domain, $agent_added) {

// Insert Data to DB
$sql = "INSERT INTO fraud_report (id, crm_number, datacash_ref, amount, sales_date, domain, date_added, agent_added) VALUES (NULL, '$crm_number', '$datacash_ref', '$amount', '$sales_date', '$domain', NOW(), '$agent_added')";
$result = mysql_query($sql) or die (mysql_error());

if ($result) {
$outcome = "<div id=\"success\">Emails sent and database updated.</div>";
} else {
$outcome = "<div id=\"error\">Something went wrong!</div>";
}

return $outcome;
}

示例数据库条目

+----+------------+--------------+---------+------------+--------------------+---------------------+------------------+
| id | crm_number | datacash_ref | amount | sales_date | domain | date_added | agent_added |
+----+------------+--------------+---------+------------+--------------------+---------------------+------------------+
| 13 | 100xxxxxxx | 10000000 | £10.93 | 18/12/08 | blargh.com | 2008-12-22 10:53:53 | agent.name |

最佳答案

你看到的是UTF-8 encoding - 这是一种以相对紧凑的格式存储 Unicode 字符的方式。

磅符号在 Unicode 中具有值 0x00a3,但是当它以 UTF-8 编写时变为 0xc2 0xa3,这就是存储在数据库中的内容。您的数据库表似乎已设置为使用 UTF-8 编码。这是一件好事!

如果您从数据库中取出该值并将其显示在 UTF-8 兼容终端上(或在声明为 UTF-8 编码的网页上),它将再次看起来像一个正常的井号。

关于php - 每当使用 £ 时,MySQL 或 PHP 都会附加一个 Â,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/386378/

27 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com