سؤال

يمكن لأي شخص أن يساعدني ؟ كيف يمكنني الحصول على شخصيات UCS2 / Hexencoded

مثل "Hello" سيعود "00480065006C006C006F"

هذه هي القيم المسجلة:

0048 = h 0065 = e 006c = l 006c = l 006f = o *

أيضا باللغة العربية (! مرحبا عالم) سوف تعود 06450631062D0628064B0627002006390627064406450020002000

كيف يمكنني الحصول على UCS2 المشفرة في PHP؟

هل كانت مفيدة؟

المحلول

MB_Convert_Encoding ($ Str، "UCS-2"، "Auto") يعمل بشكل صحيح لتحويل السلسلة، ولكن عليك القيام بعمل إضافي للحصول على الإخراج المناسب في متصفح.

ستحتاج إلى تغيير مجموعة الأحرف من الإخراج الخاص بك لتتناسب مع UCS-2 من أجل أن تكون قادرا على استخدام صدى صوت لإخراجها إلى صفحة. أيضا، قد تحتاج إلى تعيين نوع المحتوى عبر ميتا علامة في الرأس كذلك.

لقد قمت بتضمين ثلاثة أمثلة هنا في المتغيرات Unicode التالية: UCS-2، UTF-16، و UTF-8؛ كما عمل كل منهم من أجلي دون التغيير والتبديل في Internet Explorer. قد تحتاج إلى تخزين ملفات PHP الخاصة بك في UTF-8 للحصول على النتائج المناسبة. أيضا، أنا على نسخة باللغة الإنجليزية من Windows، لذلك لا يمكنني إدخال السلسلة العربية الخاصة بك في نموذج RTL المناسب. أنا آسف إذا كانت السلسلة مشوهة هنا. أؤكد لكم أنه إذا استبدلته في الموقع لاحظت تعليقاتي، فستحصل على النتيجة المناسبة. أخيرا، قد تواجه مشكلة في عرض UCS-2 و UTF-16 في Internet Explorer - يبدو أن هناك بعض الشذوذ عند إعادة تحميل الإخراج عبر ذاكرة التخزين المؤقت. ومع ذلك، عمل Firefox 3.5.5 لجميع الترميزات الثلاثة. إذا كنت جادا في إجراء تطبيق، فأنا نوصيك بشدة في استخدام UTF-8 بدلا من UCS-2.

نسخة UCS-2

Firefox 3.5.5 (موافق، لكن فايرفوكس يقول إنه UTF-16 على اختباري.)
Internet Explorer 7.0 (ليس موافق. لم يكشف / تحويل اللغة العربية بشكل صحيح.)

<?php
header('Content-Type: text/html; charset=UCS-2');
mb_http_output('UCS-2');
echo mb_convert_encoding('<html><head><meta http-equiv="Content-Type" content="text/html; charset=UCS-2" /></head><body>', 'UCS-2', 'auto');
echo mb_convert_encoding('encoding: ', 'UCS-2', 'auto');
echo mb_convert_encoding(mb_http_output(), 'UCS-2', 'auto');
echo mb_convert_encoding('<br />', 'UCS-2', 'auto');
// NOTE: Replace the string here with your phrase
$strTerm = '!مرحبا عالم';
echo mb_convert_encoding('$strTerm = '.$strTerm.'<br />', 'UCS-2', 'auto');
echo mb_convert_encoding('query string: '.$_SERVER['QUERY_STRING'].'<br />', 'UCS-2', 'auto');
echo mb_convert_encoding('original hex: '.bin2hex($strTerm).'<br />', 'UCS-2', 'auto');
echo mb_convert_encoding('transformed hex: '.bin2hex(mb_convert_encoding($strTerm, 'UCS-2', 'auto')).'<br />', 'UCS-2', 'auto');
echo mb_convert_encoding('</body>', 'UCS-2', 'auto');
?>

إصدار UTF-16

Firefox 3.5.5 (100٪ موافق)
Internet Explorer 7.0 (فشل. قد تضطر إلى تحديد ترتيب البايت.)

<?php
header('Content-Type: text/html; charset=UTF-16');
mb_http_output('UTF-16');
echo mb_convert_encoding('<html><head><meta http-equiv="Content-Type" content="text/html; charset=UTF-16" /></head><body>', 'UTF-16', 'auto');
echo mb_convert_encoding('encoding: ', 'UTF-16', 'auto');
echo mb_convert_encoding(mb_http_output(), 'UTF-16', 'auto');
echo mb_convert_encoding('<br />', 'UTF-16', 'auto');
// NOTE: Replace the string here with your phrase
$strTerm = '!مرحبا عالم';
echo mb_convert_encoding('$strTerm = '.$strTerm.'<br />', 'UTF-16', 'auto');
echo mb_convert_encoding('query string: '.$_SERVER['QUERY_STRING'].'<br />', 'UTF-16', 'auto');
echo mb_convert_encoding('original hex: '.bin2hex($strTerm).'<br />', 'UTF-16', 'auto');
echo mb_convert_encoding('transformed hex: '.bin2hex(mb_convert_encoding($strTerm, 'UTF-16', 'auto')).'<br />', 'UTF-16', 'auto');
echo mb_convert_encoding('</body>', 'UTF-16', 'auto');
?>

UTF-8.

Firefox 3.5.5 (100٪ موافق)
Internet Explorer 7.0 (100٪ موافق)

<?php
header('Content-Type: text/html; charset=UTF-8');
mb_http_output('UTF-8');
echo mb_convert_encoding('<html><head><meta http-equiv="Content-Type" content="text/html; charset=UTF-8" /></head><body>', 'UTF-8', 'auto');
echo mb_convert_encoding('encoding: ', 'UTF-8', 'auto');
echo mb_convert_encoding(mb_http_output(), 'UTF-8', 'auto');
echo mb_convert_encoding('<br />', 'UTF-8', 'auto');
// NOTE: Replace the string here with your phrase
$strTerm = '!مرحبا عالم';
echo mb_convert_encoding('$strTerm = '.$strTerm.'<br />', 'UTF-8', 'auto');
echo mb_convert_encoding('query string: '.$_SERVER['QUERY_STRING'].'<br />', 'UTF-8', 'auto');
echo mb_convert_encoding('original hex: '.bin2hex($strTerm).'<br />', 'UTF-8', 'auto');
echo mb_convert_encoding('transformed hex: '.bin2hex(mb_convert_encoding($strTerm, 'UTF-8', 'auto')).'<br />', 'UTF-8', 'auto');
echo mb_convert_encoding('</body>', 'UTF-8', 'auto');
?>

نصائح أخرى

وفق صفحة الويب هذه, ، وحدة سلسلة متعددة البايت (MBString) يدعم UCS-2. بعد تمكين هذه الوحدة، يمكنك استخدام الوظيفة mb_convert_encoding. لتحويل سلسلة من ترميز إلى الآخر.

نقلا عن توثيق وظيفة MB_Convert_Encoding:

string mb_convert_encoding  ( string $str  , string $to_encoding  [, mixed $from_encoding  ] )
Converts the character encoding of string str to to_encoding from optionally from_encoding . 
مرخصة بموجب: CC-BY-SA مع الإسناد
لا تنتمي إلى StackOverflow
scroll top