специальные символы странное поведение - PullRequest
0 голосов
/ 02 июня 2010

У меня есть эта строка в моей базе данных utf-8 mysql: "Pruebá de eñes"

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

Как я могу решить эту проблему? = (

1 Ответ

1 голос
/ 02 июня 2010

Сначала я рекомендую прочитать это: http://www.joelonsoftware.com/articles/Unicode.html (Абсолютный минимум, который должен знать каждый разработчик программного обеспечения Абсолютно, положительно, необходимо знать о Unicode и наборах символов (без извинений!) Джоэла Спольски).

Тогда, если это MySQL, вы можете установить набор символов по умолчанию в соединении с помощью "SET NAMES 'utf8'". Например, в Zend_Framework ($ db-> query ("SET NAMES 'utf8'");)

Другим вариантом является добавление фильтра к данным перед их печатью на экране. Я сделал две удобные функции ...

function utf8encode ($subject, $action = '//TRANSLIT')
{
   if ( @iconv( 'UTF-8', "UTF-8{$action}", $subject) == $subject ) {
                    #-- the value it's utf8
  } else {
                    $subject = utf8_encode ($subject);
  }

 return $subject;

}

function utf8decode ($subject, $action = '//TRANSLIT')
{
    if ( @iconv( 'UTF-8',  "UTF-8{$action}", $subject) == $subject ){
                      $subject = utf8_decode ($subject);
    } else {
                      #-- the value is probably ISO-8859-1
    }

 return $subject;
}
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...