【发布时间】:2017-02-22 06:30:29
【问题描述】:
到目前为止,我的 mySQL 数据刚刚使用 ISO-8859-1,但现在我们开始收到俄语订单,这导致字符显示为? (尝试打印发票时效果不佳!)
所以,我一直在考虑将表格转换为 UTF8。我的表结构很简单:
DROP TABLE IF EXISTS `glinks_AdminSystemEBay`;
CREATE TABLE IF NOT EXISTS `glinks_AdminSystemEBay` (
`ebay_transaction_id` bigint(20) NOT NULL DEFAULT '0',
`paypal_trans_id_fk` varchar(200) DEFAULT NULL,
`payer_email` varchar(200) DEFAULT NULL,
`date_paid` varchar(200) DEFAULT NULL,
`shipping_paid` varchar(200) DEFAULT NULL,
`address` varchar(200) DEFAULT NULL,
`product_id_purchased` int(11) DEFAULT NULL,
`payment_amount` float DEFAULT NULL,
`total_amount` float DEFAULT NULL,
`been_added_to_system` int(11) DEFAULT NULL,
`sale_from` varchar(25) DEFAULT NULL,
`product_id` bigint(20) DEFAULT NULL,
`currency` varchar(10) DEFAULT NULL,
`paypal_fee` float DEFAULT NULL,
`units_sold` int(11) DEFAULT NULL,
`ebay_fees` float DEFAULT NULL,
`item_name` longtext,
`been_emailed` tinyint(4) NOT NULL DEFAULT '0'
) ENGINE=MyISAM DEFAULT CHARACTER SET utf8 COLLATE utf8_general_ci;
当导入它时,我仍然有损坏的字符。然后我看到了这个帖子:
http://www.shawnolson.net/a/946/unicode_data_with_php_5_and_mysql_41.html
我以前不知道需要SET NAMES 'utf8'。这修复了“保存”部分(在查询之前运行它)
所以现在,你可以看看它是如何保存的:
我现在遇到的问题是正确获取数据!
作为测试,我只是从数据库中抓取记录,然后做一个转储器:
print $IN->header;
use Data::Dumper;
print Dumper($invoice->{address});
我得到的是:
$VAR1 = 'Matveenkova ,??????? ??????, ?. 21, ????. 2, ??. 90, ??????, 117208, Russian Federation';
我真的很困惑我做错了什么!有人能解释一下吗?
更新:好的,所以看起来这个问题实际上来自我们的 PDF 生成器 (DOMPDF)。在 HTML 版本中很好:
...但 PDF 版本已损坏:
我会向他们提交错误报告,看看他们是否可以提供帮助:)
【问题讨论】: