2010-09-28 2 views
3

У нас есть арабский сайт, и мы пытаемся разделить Url на face book. Url выглядитFacebook Share problem for Non English Urls

http://www.website.com/ar/شاهدى-عروض-الأزياء-العالمية-بعيون-عربية/موضة/рассказ/75

Проблема заключается в том, что facebook не получает эскизы, присутствующие на ссылку выше. Когда мы отлаживали это через скрипач, мы обнаружили, что URL-адрес, который пытается получить доступ к facebook, не совпадает с приведенным выше, этот URL-адрес похож на

www.website.com/ar/%c3%98%c2% b4% C3% 98% C2% а7% C3% 99% e2% 80% a1% C3% 98% C2% аф% C3% 99% E2% 80% b0-% C3% 98% C2% b9% C3% 98 % с2% b1% с3% 99% CB% 86% C3% 98% C2% b6-% C3% 98% C2% а7% C3% 99% E2% 80% 9e% C3% 98% C2% а3% с3% 98% с2% b2% C3% 99% с5% a0% C3% 98% C2% а7% C3% 98% C2% A1-% C3% 98% C2% а7% C3% 99% E2% 80% 9e% с3 % 98% C2% b9% C3% 98% C2% а7% C3% 99% E2% 80% 9e% C3% 99% E2% 80% а6% C3% 99% с5% a0% C3% 98% C2% A9 -% C3% 98% C2% а8% C3% 98% C2% b9% C3% 99% с5% a0% с3% 99% CB% 86% C3% 99% E2% 80% a0-% C3% 98% C2 % b9% C3% 98% C2% b1% C3% 98% C2% а8% C3% 99% с5% a0% C3% 98% C2% A9 /% C3% 99% E2% 80% а6% C3% 99% cb% 86% c3% 98% c2% b6% c3% 98% c2% a9/story/75

Мне нужно знать, что сделала facebook, шп. Еще одна вещь, которую я знаю, это то, что этот URL не кодируется UTF8. Если данный арабский url преобразуется в UTF8, то он выглядит следующим образом и не выше

www.website.com/ar/%D8%B4%D8%A7%D9%87%D8%AF%D9%89 -% D8% B9% D8% B1% D9% 88% D8% B6-% D8% A7% D9% 84% D8% A3% D8% B2% D9% 8A% D8% A7% D8% A1-% D8% A7% D9% 84% D8% B9% D8% A7% D9% 84% D9% 85% D9% 8A% D8% A9-% D8% A8% D8% B9% D9% 8A% D9% 88% 86% D9 -% D8% B9% D8% B1% D8% A8% D9% 8A% D8% A9 /% D9% 85% D9% 88% D8% B6% D8% A9/история/75

Так что мне нужно знать, какая кодировка лицо книга использует или то, что facebook делает для того чтобы получить доступ к следующему адресу, когда мы разделяем URL-адрес

www.website.com/ar/ شاهدى-عروض-الأزياء-العالمية-بعيون-عربية/موضة/история/75

ответ

4
http://www.website.com/ar/شاهدى-عروض-الأزياء-العالمية-بعيون-عربية/موضة/story/75 

Это не URI (или URL). Это IRI. К сожалению, многие программы не поддерживают IRI напрямую (в том числе SO, как вы можете видеть из того, как он связал только первую часть адреса!).

Так что если вы хотите, чтобы ссылка работала повсюду, вам придется писать ее как простой URI с именами путей, кодированных UTF-8, как в последнем примере (%D8%B4 ...). Браузер обычно представляет закодированную ссылку в адресной строке как хороший IRI, независимо от того, какая ссылка в HTML-документе является простым URI.

%c3%98%c2%b4 ... это то, что вы получаете, когда берете байты с кодировкой UTF-8 и обрабатываете их так, как если бы они были кодированы ISO-8859-1 (а затем их кодировка UTF-8 снова, сломанный «двойной UTF-8»). Как вы получаете IRI в Facebook? Либо есть интерфейс, который вы используете, вы отправляете UTF-8, но ожидаете ISO-8859-1, или это просто старая ошибка на стороне Facebook. В любом случае вам придется использовать версию URI на данный момент.