سؤال

أحاول معرفة كيفية إنشاء عناوين 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');

بمجرد أن فعلت ذلك ، تم تفسير الشخصيات بشكل صحيح.

لقد وجدت هذا أيضًا ، وهو مورد جيد جدًا:

http://www.phpwact.org/php/i18n/utf-8

نصائح أخرى

هل حاولت قراءة قيمة الحصول على قيمة مباشرة؟ كما $_SERVER['QUERY_STRING'] أو ما يعادلها؟ أنا متأكد من أن urldecode() لا تزال الوظيفة لديها بعض المشكلات ، على الرغم من أنه من المفترض أن تعمل مع UTF-8 منذ الإصدار 5.0.

هذه صفحة في PHP.NET لديه بعض التعليقات المفيدة ، وبعضها على وجه التحديد للحالات اليابانية.

مرخصة بموجب: CC-BY-SA مع الإسناد
لا تنتمي إلى StackOverflow
scroll top