Как через php успешно записать в базу греческую мю?
Правлю код. В html мю, которую достал из БД, правильно отображается и кодом μ и кодом μ
В базе данных допустимые значения пробывал и G.711μ и G.711μ
Вот выбор по ключу в php перед записью в БД
$arr_codecs = array("ulaw" => "G.711μ"); $arr_codecs = array("ulaw" => "G.711μ"); |
$arr_codecs = array("ulaw" => "G.711μ"); $arr_codecs = array("ulaw" => "G.711μ");
и так и так пробывал - не записывает в БД. Может экранировать что надо. Или может еще сортировщик после составления массива отбрасывает.
ОС Ubuntu server 14, PHP5
Дополнительно:
Так и записывайте "G.711μ"
В PHP нет проблем со строками содержащими unicode-символы
База данных прекрасно может хранить и символ &, и символ #, и цифры, и разумеется точку с запятой ;. PHP отлично умеет хранить это в переменных. И даже больше, в SQL и PHP сам символ может храниться в чистом виде, если всё в UTF-8.
Теперь собственно вопрос: вы не можете нормально сформулировать, что именно у вас не получается? Проблема с описанием проблемы? Не хватает словарного запаса? Не знаете понятий, с помощью которых можно обяснить вашу проблему?
- Тогда подскажите плииз, как ввести мю в консоли Ubuntu, чтобы в код php и в Postgresql записалась буква, поскольку сервер без X.
- Если консоль настроена на UTF-8 (проверять командой locale, смотреть на .UTF-8 в строке LANG=en_US.UTF-8), то просто вставляете из буфе... Ам. Упс. Вы сидите на сервере из-под Windows по SSH, или физически? Если физически - то я не знаю, как с клавиатуры генерировать такие символы. В консоли можно писать "μ", а уже в скрипте преобразовывать
$argv[1] = preg_replace("/(μ|μ)/", "u{03bc}", $argv[1]);
$argv[1] = preg_replace("/(μ|μ)/", "u{03bc}", $argv[1]);
И вуаля, у вас чистый UTF-8!
- Через pgadmin ввожу мю в базу, в PHP ввожу мю - теперь все работает, записывает, НО: в html отображает как u
- И в терминале psql мю тоже отображается как u латинская (локаль в консоли сервера ubuntu латинская).
- dimone73, вот латинская консоль и конвертирует UTF-8 в ASCII, что бы показать ну хоть какой-то символ (вместо пустого места). Помоему так.
А HTML страница с этим неправильным мю - в кодировке UTF-8? Загрузка данных из SQL в PHP идёт на кодировке UTF-8? - Решилось правкой кода PHP для отображения на странице HTML
if ($v->hrn == "G.711u") {echo '<span>' . 'G.711&mu;' . '</span></li>';}
if ($v->hrn == "G.711u") {echo '<span>' . 'G.711&mu;' . '</span></li>';}
В базе упорно видит обычную латинскую u хотя записывал mu
- dimone73, а остальной текст в базе данных, русский например - у вас в какой кодировке? Видимо не в UTF-8?
- Без малейшего понятия. База старая, делал не я. Проверить - искать уже не хочется. Но греческие символы не отображает. И pgadmin не отображает. И консоль Ubuntu. Краем уха читал о возможности перекодировки в Postgres, но сейчас заниматься этим нет желания: главное же в HTML теперь видится нормально. Все мю записывал из внешних приложений, не из консоли.
Опишите проблему, и специалист поможет с настройкой, исправлением ошибки или доработкой сайта. Подберём понятный план работ без лишней переписки.
Пока нет других ответов. Будьте первым, кто поможет автору.
Ответить на вопрос
Для успешной записи символа греческой буквы "мю" (μ) в базу данных через PHP, необходимо убедиться в правильной настройке кодировки и выборе правильного типа столбца в таблице базы данных.
1. Настройка кодировки:
Убедитесь, что ваша база данных и таблица настроены на использование UTF-8 или другой подходящей кодировки, поддерживающей символы Unicode. Это можно сделать при создании базы данных или изменении существующей структуры.
2. Выбор правильного типа столбца:
При создании таблицы в базе данных укажите тип столбца, поддерживающий Unicode символы. Например, для MySQL можно использовать тип данных VARCHAR с указанием кодировки UTF-8.
Пример создания таблицы с поддержкой греческой буквы "мю" в MySQL:
CREATE TABLE my_table ( id INT AUTO_INCREMENT PRIMARY KEY, name VARCHAR(255) CHARACTER SET utf8 COLLATE utf8_unicode_ci );
3. Запись данных в базу данных:
При вставке данных в таблицу убедитесь, что данные корректно преобразуются в кодировку базы данных. Для PHP можно использовать функцию mysqli_set_charset() для установки кодировки соединения с базой данных.
Пример записи данных с греческой буквой "мю" в MySQL через PHP:
$mysqli = new mysqli("host", "username", "password", "database"); $mysqli->set_charset("utf8"); $name = "Греческая буква мю: μ"; $query = "INSERT INTO my_table (name) VALUES ('$name')"; $mysqli->query($query);
Следуя этим рекомендациям, вы сможете успешно записать символ греческой буквы "мю" в базу данных через PHP.