これまではmySQLデータにISO-8859-1を使用しましたが、今ではロシア語の注文を開始しているため、文字が表示されます。 (請求書を印刷しようとするとうまくいかない!)ロシア語のUTF8とmySQL - なぜ正しく動作しないのですか?
私はテーブルを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'
を認識していませんでした。これは、今では(クエリの前にそれを実行している)部分
を「節約」という固定、あなたはそれが保存されますどのように見ることができます:
私が今抱えている問題は、バックデータを取得しています正しく!試験として
、私は単純にDBからレコードをつかんで、その後、ダンパーをしています:
print $IN->header;
use Data::Dumper;
print Dumper($invoice->{address});
私が得るすべては次のとおりです。
$VAR1 = 'Matveenkova ,??????? ??????, ?. 21, ????. 2, ??. 90, ??????, 117208, Russian Federation';
のように私は本当に困惑しています私が間違っていること!誰か光を当てることはできますか?
更新:この問題はGoogleのPDF生成ツール(DOMPDF)からのものです。
...しかし、PDFのバージョンが壊れている:それはHTML版も大丈夫です
私は彼らと一緒にバグレポートを提出し、彼らができるかどうかを確認しますヘルプ:)
お返事ありがとうございます。私は実際にこれを使用しています: '$ CONN {$ conn_key} = DBI-> connect($ dsn、$ self-> {connect} - > {login}、$ self-> {connect} - > {password} RaiseError => $ self - > {connect} - > {RaiseError}、PrintError => $ self - > {connect} - > {PrintError}、AutoCommit => 1、mysql_enable_utf8 => 1}) 'それは動作していないようです。この第三者のものを使用する代わりに、 "適切な" DBIモジュールを提供する価値があるのだろうかと思います。 –
あなたはすでに 'mysql_enable_utf8'を渡しています。それは正しいように見える。 Data :: Dumperが正しく処理していない可能性がありますか?よく分かりません。これを試してください: 'use utf8; Data :: Dumper :: AutoEncodeを使用します。 print eDumper($請求書 - > {住所}); ' –
ありがとうございます。興味深いことに、いくつかのデバッグを追加し、アドレスが正しく設定されているように見えます:アドレス:Matveenkova、Сумской、д。 21、корп。 2、кв。 90、Москва、xxxx、ロシア連邦。問題は、実際のテンプレートパーサーにあるようです。私は掘り続けるでしょう# –