2013-03-22 4 views
0

У меня возникла эта проблема, когда я преобразовал специальный символ, который нужно поместить на URL-адрес в качестве параметра, используя Javascript-запрос Ajax, а затем читает его на PHP. Символ «С».PHP: преобразование специальных символов

В моей JavaScript я поставил параметр как побег («Pina») и преобразуется в «Pi% D1a»

И когда я прочитал это в моем PHP ромб со знаком вопроса является то, что будет отображаться , Вот как я это прочитал.

escape(message) // Message being the "Pi%D1a" 

Как я уже сказал странный персонаж выходит, что, когда я сохранить свою базу данных, PostgreSQL, он выдает ошибку. Как это исправить?

+0

try escapeshellarg() .. Это может решить вашу проблему. – Dev

+0

может быть даже проблемой 'BOM'. –

+0

@Fred You * do * имеет нездоровую одержимость спецификациями. – deceze

ответ

0

Вы пытались использовать urldecode($message)?

%D1 - кодированное представление URL-адреса.

1

D1 - это ISO-8859-1 («Latin-1») кодированная форма символа «С».
«Алмазная форма с вопросительным знаком» () является символом замены Юникода. Всякий раз, когда вы его видите, это указывает на то, что браузер/редактор/безотносительно-интерпретирует-текст пытается интерпретировать текст как Unicode и встречает символ, который недопустим в предполагаемой кодировке Unicode.

Другими словами, символ на самом деле кодируется латиницей 1, но вы указываете браузеру (вероятно) кодировку UTF-8. У вас несоответствие кодировки. Либо сообщите браузеру правильную кодировку через заголовок Content-Type: text/html; charset=XXX, либо конвертируйте символ с латинского-1 в UTF-8, прежде чем работать с ним.

+0

Да, это правда. Вместо «С» появляется «алмазная форма с вопросительным знаком» (). Позвольте мне попробовать. Спасибо, парни – oneofakind

Смежные вопросы