Перейти к содержимому

Фотография

utf8 и буква "Р"проблема


  • Авторизуйтесь для ответа в теме
Сообщений в теме: 2

#1
reject

reject
  • Завсегдатай
  • 162 сообщений
Доброго времени суток!

Возникла необходимость парсить некоторые данные скриптом (с кодировкой windows-1251), затем конвертировать в utf8 и добавлять в базу. Споткнулся при добавлении данных, начинающихся с большой русской буквы "Р", вместо них добавляется пустая строка. С остальными данным проблем нет.

PHP 5.2.5, MySQL 5.0.45

Код для конвертирования из windows-1251 в utf8 приведен ниже:

function win2utf($string)
	{
		$ttbl = array("А" => "Рђ", "Б" => "Р‘", "В" => "Р’", "Г" => "Р“", "Д" => "Р”",
			"Е" => "Р•", "Ё" => "РЃ", "Ж" => "Р–", "З" => "Р—", "И" => "Р˜", "Й" => "Р™",
			"К" => "Рљ", "Л" => "Р›", "М" => "Рњ", "Н" => "Рќ", "О" => "Рћ", "П" => "Рџ",
			"Р" => "Р ", "С" => "РЎ", "Т" => "Рў", "У" => "РЈ", "Ф" => "Р¤", "Х" => "РҐ",
			"Ц" => "Р¦", "Ч" => "Р§", "Ш" => "РЁ", "Щ" => "Р©", "Ъ" => "РЄ", "Ы" => "Р«",
			"Ь" => "Р¬", "Э" => "Р­", "Ю" => "Р®", "Я" => "РЇ", "Ї" => "Р‡", "І" => "Р†",
			"Є" => "Р„", "Ў" => "РЋ", "а" => "Р°", "б" => "Р±", "в" => "РІ", "г" => "Рі",
			"д" => "Рґ", "е" => "Рµ", "ё" => "С‘", "ж" => "Р¶", "з" => "Р·", "и" => "Рё",
			"й" => "Р№", "к" => "Рє", "л" => "Р»", "м" => "Рј", "н" => "РЅ", "о" => "Рѕ",
			"п" => "Рї", "р" => "СЂ", "с" => "СЃ", "т" => "С‚", "у" => "Сѓ", "ф" => "С„",
			"х" => "С…", "ц" => "С†", "ч" => "С‡", "ш" => "С?", "щ" => "С‰", "ъ" => "СЉ",
			"ы" => "С‹", "ь" => "СЊ", "э" => "СЌ", "ю" => "СЋ", "я" => "СЏ", "і" => "С–",
			"ї" => "С—", "є" => "С”", "ў" => "Сћ");
		return strtr($string, $ttbl);
	}

Как с этим бороться? Где закралась ошибка?
  • 0

#2
reject

reject
  • Завсегдатай
  • 162 сообщений
топик можно закрыть, проблема была в фунции. при использовании функции

function win2utf($s) 
	{
		$t = '';
		
		for($i=0, $m=strlen($s); $i<$m; $i++) {
			$c = ord($s[$i]);
			if ($c<=127) {$t.=chr($c); continue; }
			if ($c>=192 && $c<=207) {$t.=chr(208).chr($c-48); continue; }
			if ($c>=208 && $c<=239) {$t.=chr(208).chr($c-48); continue; }
			if ($c>=240 && $c<=255) {$t.=chr(209).chr($c-112); continue; }
			if ($c==184) { $t.=chr(209).chr(209); continue; };
			if ($c==168) { $t.=chr(208).chr(129); continue; };
		}
	return $t;
	}

проблем не возникло.
  • 0

#3
eroha

eroha
  • В доску свой
  • 1 762 сообщений
я не пойму чем плох iconv или mbstring?
  • 0


Количество пользователей, читающих эту тему: 1

пользователей: 0, неизвестных прохожих: 1, скрытых пользователей: 0

Размещение рекламы на сайте     Предложения о сотрудничестве     Служба поддержки пользователей

© 2011-2022 vse.kz. При любом использовании материалов Форума ссылка на vse.kz обязательна.