Вы не зашли.
Главная » PHP » Перекодировка в UTF-8
#1. DarkDaNTe Off (11)
Участник
2010.08.14 18:06
Как правильно определить неизвестную кодировку и перекодировать её в utf-8?
При перекодировании windows-1251 в utf-8 все символы изменялись на какой-то непонятный код. Например двоеточие в \u003d\u0026gt; .
Помогите.
#2. Gemorroj Off (107)
Administrator
2010.08.14 18:06
это одна из разновидностей юникода. чем пользуешься для конвертирования?
#3. DarkDaNTe Off (11)
Участник
2010.08.14 20:08
iconv
#4. DarkDaNTe Off (11)
Участник
2010.08.14 21:09
Вот как на google translate. В какой бы кодировке не скопировал туда - все нормально переводит. А у меня нет. И еще не знаешь, как сделать, чтобы на выходе получился форматированный текст? Перевод при помощи Google Translate Api.
Код:
span style="color: #0000BB"><?phpfunction json2array($json){ if(get_magic_quotes_gpc()){ $json = stripslashes($json); } $json = substr($json, 1, -1); $json = str_replace(array(":", "{", "[", "}", "]"), array("=>", "array(", "array(", ")", ")"), $json); @eval("\$json_array = array({$json});"); return $json_array;}/* $s_text - текст для перевода $s_lang - с какого языка переводим (например ru) $d_lang - на какой язык переводим (например en)*/function translate($s_text, $s_lang, $d_lang) { $url='http://ajax.googleapis.com/ajax/services/language/translate?v=1.0'; $post='q='.urlencode($s_text).'&langpair='.$s_lang.'%7C'.$d_lang.'&key=notsupplied'; $c = curl_init(); curl_setopt($c, CURLOPT_URL, $url); curl_setopt($c, CURLOPT_RETURNTRANSFER, 1); curl_setopt($c, CURLOPT_REFERER, "http://site.ru/"); curl_setopt($c, CURLOPT_POST, 1); curl_setopt($c, CURLOPT_POSTFIELDS, $post); $b = curl_exec($c); curl_close($c); $json = json2array($b, true); if ($json['responseStatus'] != 200)return false; return $json['responseData']['translatedText']; }?>
Форматированный текст, типа если ввел
Код:
Текст
 
Текст
и перевел на английский, получилось:
Код:
Text
 
Text
Добавлено спустя    39 секунд:
PS: извиняюсь за функцию json2array - просто нету json'a нормального)
#5. Gemorroj Off (107)
Administrator
2010.08.15 11:11
текст вставь внутрь <pre></pre>
в каком месте получается этот юникод? гугл возвращает?
#6. DarkDaNTe Off (11)
Участник
2010.08.15 12:12
Я копирую текст с одного сайта, там кодировка windows-1251. Перевожу сразу оригинал - получаются кракозябры. Если изменяю кодировку при помощи iconv - появляется этот юникод.
По поводу кто возвращает сейчас скажу.
Добавлено спустя   4 минуты  30 секунд:
Этот юникод возвращает функция гугла. Еще оно <pre></pre> игнорирует.
Если без перевода, то все отлично получается, а так... странно
Добавлено спустя   6 минут  36 секунд:
а может это из-за аналога функции json?
#7. Gemorroj Off (107)
Administrator
2010.08.15 12:12
может быть, именно такой юникод используется в JS
#8. DarkDaNTe Off (11)
Участник
2010.08.15 12:12
Хм, а как тогда перевести гуглом, чтобы все получилось?
#9. Gemorroj Off (107)
Administrator
2010.08.15 12:12
DarkDaNTe написал:
Я копирую текст с одного сайта, там кодировка windows-1251. Перевожу сразу оригинал - получаются кракозябры.
я не понимаю где именно проблема. iconv дает это, либо апи гугла?
#10. DarkDaNTe Off (11)
Участник
2010.08.15 13:01
Апи гугла
Добавлено спустя   4 минуты  47 секунд:
Да, точно, апи гугла.
Может не в utf-8 перекодировать?
#11. DarkDaNTe Off (11)
Участник
2010.08.15 14:02
и после гугл апи <pre> не катит
Добавлено спустя   7 минут  45 секунд:
Интуиция решает) Вся проблема была в корявой функции, заменяющей нормальный json_decode.
Полазил по документации в гугле и нашел PEAR класс, рекомендованый гуглом, если нет json.
Зря только плохо думал про Google Api)
Все сделал) Но <pre> все еще не срабатывает)
Добавлено спустя   9 минут  35 секунд:
http://pear.php.net/pepr/pepr-proposal-show.php?id=198 - вот если кому пригодится.
Код:
span style="color: #0000BB"><?phpif ( !function_exists('json_decode') ){ function json_decode($content, $assoc=false){ require_once 'JSON.php'; if ( $assoc ){ $json = new Services_JSON(SERVICES_JSON_LOOSE_TYPE); } else { $json = new Services_JSON; } return $json->decode($content); }}if ( !function_exists('json_encode') ){ function json_encode($content){ require_once 'Services/JSON.php'; $json = new Services_JSON; return $json->encode($content); }}?>
Вложения
JSON.tar.gz 24kb [загрузок: 704]
#12. DarkDaNTe Off (11)
Участник
2010.08.15 14:02
Ну и еще если кому понадобится) Текст, который вы отправляете на перевод пропускаем через nl2br();
Все. Вопрос исчерпан.
Страниц: 1 2 Все
Главная
WEB
PunBB Mod v0.6.2
0.018 s