Как хранить данные в юникоде на языке хинди

Я использую PHP и MySQL для приложения.

Вопросы:

  1. Как хранить данные в MySQL नवीन खेतिहर उपकरण। читаемом формате или निलेस र पà¥à¤¬ формате

  2. Когда пользователь вводит данные в текстовое поле и нажимает кнопку «Отправить», мы получаем данные в другом формате. Что нам нужно сделать, если мы конвертируем и сохраняем в MySQL в читаемом формате.


person nilesh    schedule 15.09.2012    source источник


Ответы (4)


Выберите набор символов utf8 и сопоставление utf8_general_ci.

Очевидно, что Collation поля (в котором вы хотите хранить текст на хинди) должно быть utf8_general_ci.

Чтобы изменить поле таблицы, запустите

ALTER TABLE `<table_name>` CHANGE `<field_name>` `<field_name>` VARCHAR(100) 
CHARSET utf8 COLLATE utf8_general_ci DEFAULT '' NOT NULL;

После подключения к базе данных сначала выполните следующую инструкцию.

mysql_set_charset('utf8');

Eg:

//setting character set
mysql_set_charset('utf8');

//insert Hindi text
mysql_query("INSERT INTO ....");

Чтобы получить данные

//setting character set
mysql_set_charset('utf8');

//select Hindi text
mysql_query("SELECT * FROM ....");

Прежде чем печатать любой текст в формате Unicode (скажем, текст на хинди) в браузере, вам необходимо установить тип содержимого этой страницы, добавив метатег.

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

Eg:

<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" 
"http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml">
<head>
<meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
<title>Example Unicode</title>
</head>

<body>
<?php echo $hindiText; ?>
</body>
</html>

Обновление:

mysql_query("SET CHARACTER SET utf8") has changed tomysql_set_charset('utf8'); Это предпочтительный способ изменить кодировку. Использование mysql_query() для его установки (например, SET NAMES utf8) не рекомендуется. См. http://php.net/manual/en/function.mysql-set-charset.php*

person rajukoyilandy    schedule 15.09.2012
comment
спасибо, Раджу, я установил все это, но у меня есть проблема, например 1) Какой правильный формат данных должен храниться в mysql в читаемом формате или другом формате, например: (a) नवीन (b) निले स र पà и, во-вторых, беря текст из поля ввода, мы получаем данные в неподдающемся формату, поэтому как его преобразовать - person nilesh; 15.09.2012
comment
@nilesh — вы можете хранить данные в обычном формате (как в случае обычного текста). Если вы используете какое-либо стороннее приложение (которое не поддерживает юникод) для просмотра данных в вашей базе данных, вы можете увидеть поврежденные данные, но на самом деле они безопасны в mysql! см. мое обновление: вам нужно установить набор символов как на стороне mysql, так и на стороне браузера. - person rajukoyilandy; 15.09.2012
comment
спасибо @raju, хорошо, я использую базу данных mysql и внешний интерфейс php, и теперь, когда я печатаю текст в текстовом поле, его хранение в базе данных в таком формате ¤¨à¤µà¥€à¤¨ उपकरण। и когда я восстанавливаю правильное отображение снова в किसानों के लिये एक नवरीन उ поэтому я просто хочу знать, есть ли какая-либо функция, которую я могу хранить непосредственно в читаемом формате? - person nilesh; 15.09.2012
comment
На первый взгляд это похоже на правильную UTF-8, вам просто нужно использовать инструмент, который поддерживает эту кодировку (похоже, вы используете инструмент, который ограничен или по умолчанию используется что-то вроде ISO-8859-1). - person tripleee; 15.09.2012
comment
@nilesh - На самом деле ваши данные хранятся в читаемом формате. То, что сказал Трилли, абсолютно верно. Инструмент, который вы используете для просмотра данных, может не иметь полной поддержки Unicode. Кстати, какой инструмент показал вам текст किसानों के लिये à¤à¤• नवीन उपकरण। ? - person rajukoyilandy; 15.09.2012
comment
@raju спасибо, так что вы думаете, что данные в хранилище идеальны, никаких изменений не требуется, знайте, потому что мы собираемся ввести более 10000 записей, так что знаете ли вы какие-либо функции или инструменты, которые поддерживают - person nilesh; 15.09.2012
comment
@triplee спасибо, друг, ты знаешь какой-нибудь инструмент кодирования, который поддерживает - person nilesh; 15.09.2012
comment
@nilesh - я разработал приложение, которое использует некоторые фразы на 41 языке, и я использовал PHP + MySQL (никакие другие инструменты не использовались для какого-либо процесса преобразования). Неважно, есть ли у вас 10 000 или 20 000 записей. И еще одна важная вещь: я изменил mysql_query("SET CHARACTER SET utf8") на mysql_set_charset('utf8'); для повышения производительности. Я использую PHPMyAdmin для обработки символов юникода и SQLyog для нормальной работы (поскольку SQLyog не имеет полной поддержки юникода). - person rajukoyilandy; 15.09.2012
comment
@raju только последний вопрос, вы знаете мое текущее состояние и формат, в котором данные хранятся и извлекаются, так что все в порядке, если я продвинусь вперед с этим условием, что-нибудь нужно знать, тогда дайте мне знать - person nilesh; 15.09.2012
comment
@nilesh - Если вы успешно вставили и извлекли только одну запись, то, безусловно, вы можете использовать тот же метод для вставки и/или извлечения более 10000 записей... Имейте в виду, что вам нужно установить правильный набор символов перед выполнением любого запроса. в MySQL... (извините за поздний ответ) - person rajukoyilandy; 16.09.2012
comment
Обратите внимание, если вы используете mysqli mysqli_set_charset($db_conn,'utf-8'); - person Alpha; 10.09.2019

Вам нужно только запустить следующую команду для таблицы.

ALTER TABLE <tablename> CONVERT TO CHARACTER SET utf8 COLLATE utf8_unicode_ci;

Примечание. Вы должны использовать utf8_general_ci вместо ut8_unicode_ci, так как говорят, что это быстрее. В чем разница между utf8_general_ci и utf8_unicode_ci

person Sorter    schedule 06.08.2014

Нет необходимости изменять таблицу с кодировкой. но ваша база данных должна быть с utf8_unicode_ci.

при подключении к базе данных просто нужно добавить только эту строку. "mysqli_set_charset($con, 'utf8')"

    $con = mysqli_connect(DB_HOST, DB_USER, DB_PASSWORD, DB_DATABASE);
    mysqli_set_charset($con, 'utf8');
    mysqli_query($con, $sql);
person Dinesh Sarak    schedule 09.10.2016
comment
вы правы, это сработало, я использовал Storage Engine myISAM & Collation utfmb4_unicode_520_ci в mysql и использовал mysqli_set_charset($con ,'utf8'); в моем php. - person Lakhvir Singh; 30.03.2020

После преобразования COLLATE в utf8_general_ci используйте эту строку mysqli_set_charset($con, 'utf8'); между $con и mysqli_query() под вашим запросом.

$con= mysqli_connect($host,$user,$pass,$db) или die('Невозможно подключиться');

$sql="ваш запрос..";

mysqli_set_charset ($ con, 'utf8');

$result=mysqli_query($con,$sql);

person Jiten Basnet    schedule 27.06.2018
comment
Вам нужно упомянуть конкретный аспект, чтобы позаботиться, в этом случае, включая кодировку как «utf-8», чтобы получить unicode. - person NitinSingh; 27.06.2018