Ссылка на php скрипт. Скрипт нормально получает параметры version и name, но text не получается, он становится таким:
{B03131}1{FFFFFF} �������� ��������� {B03131}[2]{FFFFFF} ������ ��������� {B03131}[3]{FFFFFF} ����� � �������������� {B03131}[4]{FFFFFF} ������ �� ������� {B03131}[5]{FFFFFF} ��������� и т.д.
За � скрывается текст на русском, но текст на английском так же будет присутствовать в строке. Скрипт должен заносить 3 параметра в базу данных (mysql), но из-за этих вопросиков получается ошибка mysql 1366. Как сделать не понимаю.
Пробовал сделать так:
$text = mb_convert_encoding($_REQUEST['text'], 'utf8', mb_detect_encoding($_REQUEST['text']));
Но вместо � теперь ?
php скрипт:
<html>
<body>
<?php
error_reporting(E_ALL);
ini_set('display_errors', 1);
$text = urldecode($_GET['text']);
$version = $_GET['version'];
$name = $_GET['name'];
if ($text == "" or $version == "" or $name == ""){echo "Не введены все
параметры"; exit();}
$mysqli = new mysqli('localhost', 'mylogin', 'mypass', 'BD_name');
if (!$mysqli){exit();}
$str_sql_query = "INSERT INTO DropText (Name_Who, Version, Text) VALUES
('".$name."','".$version."','".$text."')";
echo $str_sql_query;
if (!$mysqli->query($str_sql_query)){echo $mysqli->errno;}else{echo "Всё
прошло удачно";}
$mysqli->close();
?>
</body>
</html>
Вам поможет mb_convert_encoding()
с CP1251 на UTF-8. Вы правильно подошли к вопросу, но mb_detect_encoding()
в вашем случае будет возвращать неверную кодировку ASCII.
Если у вас много таких переменных в проекте - обратите внимание на https://github.com/neitanod/forceutf8.
Если же случай единичный, то вот рабочее решение.
header('Content-Type: text/html; charset=UTF-8');
$string = "%7BB03131%7D%5B1%5D%7BFFFFFF%7D%20%C4%E5%E9%F1%F2%E2%E8%FF%20%EF%E5%F0%F1%EE%ED%E0%E6%E0%0A%7BB03131%7D%5B2%5D%7BFFFFFF%7D%20%CD%E0%E2%FB%EA%E8%20%EF%E5%F0%F1%EE%ED%E0%E6%E0%0A%7BB03131%7D%5B3%5D%7BFFFFFF%7D%20%D1%E2%FF%E7%FC%20%F1%20%E0%E4%EC%E8%ED%E8%F1%F2%F0%E0%F6%E8%E5%E9%0A%7BB03131%7D%5B4%5D%7BFFFFFF%7D%20%CF%EE%EC%EE%F9%FC%20%EF%EE%20%F1%E5%F0%E2%E5%F0%F3%0A%7BB03131%7D%5B5%5D%7BFFFFFF%7D%20%CD%E0%F1%F2%F0%EE%E9%EA%E8%20%EF%E5%F0%F1%EE%ED%E0%E6%E0%0A%7BB03131%7D%5B6%5D%7BFFFFFF%7D%20%C4%EE%ED%E0%F2%0A%7BB03131%7D%5B7%5D%7BFFFFFF%7D%20%D2%E5%EB%E5%F4%EE%ED%0A%7BB03131%7D%5B8%5D%7BFFFFFF%7D%20%CE%F2%EA%F0%FB%F2%FC%20%F0%F3%EB%E5%F2%EA%F3%0A%7BB03131%7D%5B9%5D%7BFFFFFF%7D%20%C8%F1%F2%EE%F0%E8%FF%20%ED%E8%EA%EE%E2%0A%7BB03131%7D%5B10%5D%7BFFFFFF%7D%20%C8%F1%F2%EE%F0%E8%FF%20%ED%E0%EA%E0%E7%E0%ED%E8%E9%0A%7BB03131%7D%5B11%5D%7BFFFFFF%7D%20%CF%F0%E5%EC%E8%F3%EC%20%E8%E3%F0%EE%EA%E8%20%EE%ED%EB%E0%E9%ED%0A%7BB03131%7D%5B12%5D%7BFFFFFF%7D%20%CF%F0%EE%EC%EE%2D%EA%EE%E4%3A%20%7BD2772C%7D%23Maras%7BFFFFFF%7D%0A%7BB03131%7D%5B13%5D%7BFFFFFF%7D%20%D1%E8%F1%F2%E5%EC%E0%20%EF%F0%EE%EC%EE%2D%EA%EE%E4%EE%E2";
echo mb_convert_encoding(urldecode ($string), 'UTF-8','CP1251');
Демонстрация: https://adudnik.ru/string_convert.php
Ваша строка закодирована в CP1251 из-за этого проблемы при выводе данных в HTML формат;
У меня ваш пример отрабатывает в изначальном виде без проблем:
$string = "%7BB03131%7D%5B1%5D%7BFFFFFF%7D%20%C4%E5%E9%F1%F2%E2%E8%FF%20%EF%E5%F0%F1%EE%ED%E0%E6%E0%0A%7BB03131%7D%5B2%5D%7BFFFFFF%7D%20%CD%E0%E2%FB%EA%E8%20%EF%E5%F0%F1%EE%ED%E0%E6%E0%0A%7BB03131%7D%5B3%5D%7BFFFFFF%7D%20%D1%E2%FF%E7%FC%20%F1%20%E0%E4%EC%E8%ED%E8%F1%F2%F0%E0%F6%E8%E5%E9%0A%7BB03131%7D%5B4%5D%7BFFFFFF%7D%20%CF%EE%EC%EE%F9%FC%20%EF%EE%20%F1%E5%F0%E2%E5%F0%F3%0A%7BB03131%7D%5B5%5D%7BFFFFFF%7D%20%CD%E0%F1%F2%F0%EE%E9%EA%E8%20%EF%E5%F0%F1%EE%ED%E0%E6%E0%0A%7BB03131%7D%5B6%5D%7BFFFFFF%7D%20%C4%EE%ED%E0%F2%0A%7BB03131%7D%5B7%5D%7BFFFFFF%7D%20%D2%E5%EB%E5%F4%EE%ED%0A%7BB03131%7D%5B8%5D%7BFFFFFF%7D%20%CE%F2%EA%F0%FB%F2%FC%20%F0%F3%EB%E5%F2%EA%F3%0A%7BB03131%7D%5B9%5D%7BFFFFFF%7D%20%C8%F1%F2%EE%F0%E8%FF%20%ED%E8%EA%EE%E2%0A%7BB03131%7D%5B10%5D%7BFFFFFF%7D%20%C8%F1%F2%EE%F0%E8%FF%20%ED%E0%EA%E0%E7%E0%ED%E8%E9%0A%7BB03131%7D%5B11%5D%7BFFFFFF%7D%20%CF%F0%E5%EC%E8%F3%EC%20%E8%E3%F0%EE%EA%E8%20%EE%ED%EB%E0%E9%ED%0A%7BB03131%7D%5B12%5D%7BFFFFFF%7D%20%CF%F0%EE%EC%EE%2D%EA%EE%E4%3A%20%7BD2772C%7D%23Maras%7BFFFFFF%7D%0A%7BB03131%7D%5B13%5D%7BFFFFFF%7D%20%D1%E8%F1%F2%E5%EC%E0%20%EF%F0%EE%EC%EE%2D%EA%EE%E4%EE%E2";
var_dump(urldecode ($string));
Возвращает:
string(498) "{B03131}[1]{FFFFFF} Действия персонажа {B03131}[2]{FFFFFF} Навыки персонажа {B03131}[3]{FFFFFF} Связь с администрацией {B03131}[4]{FFFFFF} Помощь по серверу {B03131}[5]{FFFFFF} Настройки персонажа {B03131}[6]{FFFFFF} Донат {B03131}[7]{FFFFFF} Телефон {B03131}[8]{FFFFFF} Открыть рулетку {B03131}[9]{FFFFFF} История ников {B03131}[10]{FFFFFF} История наказаний {B03131}[11]{FFFFFF} Премиум игроки онлайн {B03131}[12]{FFFFFF} Промо-код: {D2772C}#Maras{FFFFFF} {B03131}[13]{FFFFFF} Система промо-кодов"
Проблемы начинаются если задать в файле:
header('Content-Type: text/html; charset=utf-8');
Т.е. сделать страницу HTML с utf-8. Из-за html сущностей ваша CP1251 строка превращается в крякозябры UTF-8.
Если ваш файл - просто обработчик и не требует вывода себя пользователю как html страницы, то проблему можно решить добавлением в шапку:
header('Content-Type: text; charset=utf-8');
Но лучше задать header('Content-Type: text/html; charset=utf-8');
и использовать
mb_convert_encoding(urldecode ($string), 'UTF-8','CP1251')
Самый правильный вариант - изначально кодировать GET параметры в UTF-8 и отказаться от CP1251.
Айфон мало держит заряд, разбираемся с проблемой вместе с AppLab
Может кто подсказать как исправить?
Как правильно добавить элементы GregorianCalendar в ListЕсть код где читаю строки по разделителю числа добавляю в один лист, а дату необходимо сохранить...
Только начинаю разбираться с EJB поэтому может это ламерский вопросДопустим есть справочник сотрудников