2013-02-20 4 views
6

У меня была форма регистрации, которая будет вставляться в таблицу-член, сортировка находится в utf8_general_ci, и я использую SET NAMES utf8 в php-скрипте, здесь проблема, я не могу вставить строку, отличную от чистой алфавит, я пытаюсь ввести «Hélène» в поле формы, после выполнения запроса sql я проверяю свою таблицу db, поле вставляется как «H», остальная часть алфавита не может быть вставлена ​​всякий раз, когда строка имеет специальный алфавит таких как é, ř сзади.MySQL Вставить специальные символы

Может кто-нибудь помочь? Благодарю.

РЕШЕНИЕ:

<meta http-equiv="Content-Type" content="text/html; charset=utf-8" /> 

mysql_query("SET NAMES utf8"); 

выше две линии важной частью принимать ввод в базу данных и вывода на веб-странице.

Спасибо всем за советы.

+3

Читайте о кодировках и их обработка в этих двух больших текстов, и вы наверняка найдете проблему: http://kunststube.net/frontback/ и http://kunststube.net/encoding/. –

+0

Какова кодировка таблицы БД? Убедитесь, что это также utf-8. Также проверьте, что ваш скрипт получает правильную строку. Повторите эхо-данные формы, прежде чем вставлять их в БД. (После проверки.) –

+0

Посмотрите решение здесь [SET NAMES utf8 в MySQL?] [1] [1]: http://stackoverflow.com/questions/2159434/set-names-utf8-in- mysql – sanj

ответ

1

Убедитесь, что вы создаете базу данных с кодированием utf8

CREATE SCHEMA `youdatabasename` DEFAULT CHARACTER SET utf8; 
+0

Это не ответ. –

+0

О, хорошо, это то, что я использую, чтобы убедиться, что у меня нет проблем с кодировкой :) должен быть комментарий вместо этого? –

+0

этого недостаточно, чтобы быть уверенным. –

2

попытаться вставить данные после кодирования. попробуйте mysql_real_escape_string() для кодирования. затем выполните запрос на вставку.

EDIT: -

Этот ответ был отправлен один год назад. Теперь mysql_real_escape_string() для php 5 будет работать в mysqli :: real_escape_string этот формат. пожалуйста, проверьте here

1

И если вы не хотите, чтобы беспокоиться о так много различных наборов символов кодировок, или если htmlentities не работает для вас, здесь альтернатива: Я использовал соединение Mysqli DB (и PHPV5) Форма пост для записи/вставка в MySQl DB.

$Notes = $_POST['Notes']; //can be text input or textarea. 

$charset = mysqli_character_set_name($link); //only works for mysqli DB connection 
printf ("To check your character set but not necessary %s\n",$charset); 

$Notes = str_replace('"', '&quot;', $Notes); //double quotes for mailto: emails. 
$von = array("ä","ö","ü","ß","Ä","Ö","Ü"," ","é"); //to correct double whitepaces as well 
$zu = array("&auml;","&ouml;","&uuml;","&szlig;","&Auml;","&Ouml;","&Uuml;","&nbsp;","&#233;"); 
$Notes = str_replace($von, $zu, $Notes); 
echo " Notes:".$Notes."<br>" ; 
$Notes = mysqli_real_escape_string($link, $Notes); //for recommended mysqli DB connection. 
//$Notes = mysql_real_escape_string($Notes); //for old deprecated mysql DB connection. 

// mysqli_real_escape_string Escapes special characters in a string for use in an SQL statement 

echo " Notes:".$Notes ; //ready for inserting 
+0

При отображении содержимого: И эта строка в заголовке, если появляются смешные символы. KarlosFontana

+0

'mysqli_real_escape_string' не должно быть используется там, где есть отличная система заметок. – tadman

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