أحرف مزدوجة بايت في QueryString باستخدام PHP
-
23-09-2019 - |
سؤال
أحاول معرفة كيفية إنشاء عناوين URL مخصصة للغات المزدوجة بايت.
على سبيل المثال ، يحتوي عنوان URL هذا من Amazon Japan على أحرف يابانية داخل QueryString (على وجه التحديد ، المسار):
http://www.amazon.co.jp/風の谷のナウシカ-DVD-宮崎駿/dp/B00005R5J3/ref=sr_1_3?ie=UTF8&s=dvd&qid=1269891925&sr=8-3
ما أود القيام به هو:
http://www.mysite.com/風の谷のナウシカ
او حتى
http://www.mysite.com/index.php?name=風の谷のナウシカ
تكون قادرًا على فك تشفير $GET[name]
سلسلة.
أعتقد أنني جربت كل من urldecode
و utf8_decode
الاحتمالات ، لكنني فقط أحصل على رطوبة رداً على ذلك.
كل هذا يعمل بشكل جيد في شكل $_POST
, ، لكني بحاجة إلى أن تكون عناوين URL هذه قابلة للبريد الإلكتروني ...
تحرير: هنا هو الرمز الذي أستخدمه:
<p>Original: <?= $_GET[str]; ?>
<br>Decode: <?= urldecode($_GET[str]); ?>
<br>Decode querystring: <?= urldecode($_SERVER[QUERY_STRING]); ?>
<p>
<?
while (list($var,$value) = each ($_SERVER)) {
echo "$var => $value <br />";
}
?>
المحلول
فهمتك!
كنت بحاجة للتأكد من أن الرأس كان يتقدم:
header ('Content-type: text/html; charset=utf-8');
بمجرد أن فعلت ذلك ، تم تفسير الشخصيات بشكل صحيح.
لقد وجدت هذا أيضًا ، وهو مورد جيد جدًا:
نصائح أخرى
هل حاولت قراءة قيمة الحصول على قيمة مباشرة؟ كما $_SERVER['QUERY_STRING']
أو ما يعادلها؟ أنا متأكد من أن urldecode()
لا تزال الوظيفة لديها بعض المشكلات ، على الرغم من أنه من المفترض أن تعمل مع UTF-8 منذ الإصدار 5.0.
هذه صفحة في PHP.NET لديه بعض التعليقات المفيدة ، وبعضها على وجه التحديد للحالات اليابانية.