1

Webhook (XML) トリガーの後、次の処理を行う PHP コードがあります。

$xmlData = fopen('php://input' , 'rb'); 
while (!feof($xmlData)) { $xmlString .= fread($xmlData, 4096); }
fclose($xmlData);

file_put_contents('orders/order' . date('m-d-y') . '-' . time() . '.xml', $xmlString, FILE_APPEND);

また、この情報をデータベースに転送します。

$xml = new SimpleXMLElement($xmlString);
$address1 = trim($xml->{'billing-address'}->address1);
$sql="INSERT INTO `Customers`(`address1`)
VALUES
('$address1')";

私の問題は、xml ファイルとデータベースの文字が正しく転送されないことです。

原文: サンパウロ

サーバーに保存された XML ファイル:

<?xml version="1.0" encoding="UTF-8"?>
 <address1>S&#xE3;o Paulo</address1>

データベースに関する情報 (utf8_general_ci):

サンパウロ

すべてが適切に UTF-8 に設定されているように見えますが、まだこの文字の問題があります。

4

2 に答える 2

0

あなたが使用しているphp関数は、マルチバイト文字列を管理するためのものではないと思います. 入れてみて

mb_internal_encoding("UTF-8");

対応するマルチバイト バージョンを優先して関数を変更する必要があるかどうかを理解するには、php.net のマルチバイト文字列関数のページを参照してください。

最後のチャンスとして、文字列をデータベースに挿入する前にアイコン化してみてください:

$address1 = trim($xml->{'billing-address'}->address1);
$address1 = iconv(iconv_get_encoding($string), "UTF-8", $address1);
于 2012-11-11T18:35:57.613 に答える
0

データベース接続を確立したら、クエリを実行します。

SET NAMES 'utf8

それは役立つはずです。また、「Web フック」からのデータがその形式であることを確認してください。

于 2012-11-11T18:26:08.787 に答える