За последние 24 часа нас посетили 16065 программистов и 1541 робот. Сейчас ищут 873 программиста ...

Скрипт переводчика и проблемы с кодировкой

Тема в разделе "PHP для новичков", создана пользователем Insanoff, 28 янв 2009.

  1. Insanoff

    Insanoff Активный пользователь

    С нами с:
    28 янв 2009
    Сообщения:
    16
    Симпатии:
    0
    Адрес:
    Гах
    у меня проблемы с кодировкой. здесь http://www.php.net/utf8_encode нашел кой что но решить не удалось. Помогите начинающему программисту!

    код:
    PHP:
    1. <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
    2. <html xmlns="http://www.w3.org/1999/xhtml" xml:lang="ru" lang="ru">
    3. <head profile="http://gmpg.org/xfn/11">
    4. <meta http-equiv="content-type" content="text/html; charset=UTF-8" />
    5. <title>GGLTranslator</title>
    6. <style type="text/css"><!--
    7. html, body {
    8.     font-family:Verdana, Arial, Helvetica, sans-serif;
    9.     font-size:12px;
    10.     color:#666666;
    11.     background:#FFFFFF;
    12. }
    13.  
    14. .lang {
    15.     color:#CC0033;
    16. }
    17. --></style>
    18. </head>
    19. <body>
    20. <?php
    21. function translate($text,$lg) {
    22. $lg = urlencode($lg);
    23. $text = urlencode($text);
    24. $link = file_get_contents("http://google.com/translate_t?langpair=$lg&text=$text");
    25. preg_match('/<div id=result_box dir=\"ltr\">(.*?)<\/div>/', $link, $out);
    26. return $out[1];
    27. }
    28.  
    29. $f_lang=$_POST['f_lang'];
    30. $s_lang=$_POST['s_lang'];
    31. if (isset($_POST['submit'])){
    32.     foreach ($f_lang as $first_lang){echo '<b class="lang">',$first_lang,'</b>';}
    33.     foreach ($s_lang as $second_lang){echo ' to <b class="lang">',$second_lang,'</b><br />';}
    34.     echo translate($_POST['content'], "$first_lang|$second_lang");
    35. }
    36. ?>
    37. <form action="<?=$_SERVER['PHP_SELF']?>" method="post">
    38.     Введите текст.<br />
    39.     <textarea name="content" rows=9 cols=50>good</textarea><br />
    40.     <select name="f_lang[]">
    41.         <option selected="selected"  value="en">английский</option>
    42.         <option  value="ar">арабский</option>
    43.         <option  value="bg">болгарский</option>
    44.         <option  value="vi">вьетнамский</option>
    45.         <option  value="nl">голландский</option>
    46.         <option  value="el">греческий</option>
    47.         <option  value="da">датский</option>
    48.         <option  value="iw">иврит</option>
    49.         <option  value="id">индонезийский</option>
    50.         <option  value="es">испанский</option>
    51.         <option  value="it">итальянский</option>
    52.         <option  value="ca">каталанский</option>
    53.         <option  value="zh-CN">китайский</option>
    54.         <option  value="ko">корейский</option>
    55.         <option  value="lv">латышский</option>
    56.         <option  value="lt">литовский</option>
    57.         <option  value="de">немецкий</option>
    58.         <option  value="no">норвежский</option>
    59.         <option  value="pl">польский</option>
    60.         <option  value="pt">португальский</option>
    61.         <option  value="ro">румынский</option>
    62.         <option  value="ru">русский</option>
    63.         <option  value="sr">сербский</option>
    64.         <option  value="sk">словацкий</option>
    65.         <option  value="sl">словенский</option>
    66.         <option  value="tl">тагальский</option>
    67.         <option  value="uk">украинский</option>
    68.         <option  value="fi">финский</option>
    69.         <option  value="fr">французский</option>
    70.         <option  value="hi">хинди</option>
    71.         <option  value="hr">хорватский</option>
    72.         <option  value="cs">чешский</option>
    73.         <option  value="sv">шведский</option>
    74.         <option  value="ja">японский</option>
    75.     </select>
    76.     <select name="s_lang[]">
    77.         <option  value="en">английский</option>
    78.         <option  value="ar">арабский</option>
    79.         <option  value="bg">болгарский</option>
    80.         <option  value="vi">вьетнамский</option>
    81.         <option  value="nl">голландский</option>
    82.         <option  value="el">греческий</option>
    83.         <option  value="da">датский</option>
    84.         <option  value="iw">иврит</option>
    85.         <option  value="id">индонезийский</option>
    86.         <option  value="es">испанский</option>
    87.         <option  value="it">итальянский</option>
    88.         <option  value="ca">каталанский</option>
    89.         <option  value="zh-CN">китайский</option>
    90.         <option  value="ko">корейский</option>
    91.         <option  value="lv">латышский</option>
    92.         <option  value="lt">литовский</option>
    93.         <option  value="de">немецкий</option>
    94.         <option  value="no">норвежский</option>
    95.         <option  value="pl">польский</option>
    96.         <option  value="pt">португальский</option>
    97.         <option  value="ro">румынский</option>
    98.         <option selected="selected"  value="ru">русский</option>
    99.         <option  value="sr">сербский</option>
    100.         <option  value="sk">словацкий</option>
    101.         <option  value="sl">словенский</option>
    102.         <option  value="tl">тагальский</option>
    103.         <option  value="uk">украинский</option>
    104.         <option  value="fi">финский</option>
    105.         <option  value="fr">французский</option>
    106.         <option  value="hi">хинди</option>
    107.         <option  value="hr">хорватский</option>
    108.         <option  value="cs">чешский</option>
    109.         <option  value="sv">шведский</option>
    110.         <option  value="ja">японский</option>
    111.     </select>
    112.     <input type="submit" name="submit" value="Translate" />
    113. </form>
    114. </body>
    115. </html>
     
  2. unicross

    unicross Активный пользователь

    С нами с:
    14 янв 2009
    Сообщения:
    194
    Симпатии:
    0
    А где модификатор u ?
     
  3. Greg1978

    Greg1978 Активный пользователь

    С нами с:
    18 окт 2008
    Сообщения:
    484
    Симпатии:
    0
    Адрес:
    class SenjorUser{}
    Это KOI-8R
     
  4. Luge

    Luge Старожил

    С нами с:
    2 фев 2007
    Сообщения:
    4.680
    Симпатии:
    1
    Адрес:
    Минск
    Insanoff
    смените аватару. Разрешены только личные фото.

    имя и республику можете указать в профиле

    Воровать плохо
     
  5. neyr00n

    neyr00n Активный пользователь

    С нами с:
    29 ноя 2007
    Сообщения:
    106
    Симпатии:
    0
    в 24 строке добавь:

    file_get_contents("http://google.com/translate_t?langpair=$lg&text=$text&ie=UTF8");

    и возвращать значение следует так:

    return iconv( "KOI8-R", "UTF-8", $out[1] );
     
  6. Insanoff

    Insanoff Активный пользователь

    С нами с:
    28 янв 2009
    Сообщения:
    16
    Симпатии:
    0
    Адрес:
    Гах
    "iconv" хорошая вещь. сейчас русские буквы работает! но здесь же KOI8-R! мне нужно что то универсальное, чтоб другие языки тоже работал!
     
  7. Luge

    Luge Старожил

    С нами с:
    2 фев 2007
    Сообщения:
    4.680
    Симпатии:
    1
    Адрес:
    Минск
  8. Insanoff

    Insanoff Активный пользователь

    С нами с:
    28 янв 2009
    Сообщения:
    16
    Симпатии:
    0
    Адрес:
    Гах
    писал тут "mb_detect_encoding" и оказывается что кодировка "UTF-8"!!!
    PHP:
    1. function translate($text,$lg) {
    2. $lg = urlencode($lg);
    3. $text = urlencode($text);
    4. $link = file_get_contents("http://google.com/translate_t?langpair=$lg&text=$text");
    5. preg_match('/<div id=result_box dir=\"ltr\">(.*?)<\/div>/', $link, $out);
    6. $encoding = mb_detect_encoding( $out[1], "auto" );
    7. return $encoding;
    8. }
    и тут тоже пробовал, везде "UTF-8"!!!
    с мета тегамы все в порядке. не понимаю почему не работает!?!?!?
    PHP:
    1. if (isset($_POST['submit'])){
    2.     foreach ($f_lang as $first_lang){echo '<b class="lang">',$first_lang,'</b>';}
    3.     foreach ($s_lang as $second_lang){echo ' to <b class="lang">',$second_lang,'</b><br />';}
    4.     echo translate($_POST['content'], "$first_lang|$second_lang");
    5.     $fileencoding = translate($_POST['content'], "$first_lang|$second_lang");
    6.     echo mb_detect_encoding( $fileencoding, "auto" );
    7. }
     
  9. unicross

    unicross Активный пользователь

    С нами с:
    14 янв 2009
    Сообщения:
    194
    Симпатии:
    0
    Не доверяйте этой строке. Эта функция работает не корректно.
    Тем более в "auto" ("ASCII,JIS,UTF-8,EUC-JP,SJIS") ни KOI8-R или windows-1251 не входят...
     
  10. Insanoff

    Insanoff Активный пользователь

    С нами с:
    28 янв 2009
    Сообщения:
    16
    Симпатии:
    0
    Адрес:
    Гах
    в конце концов никто не знает?
     
  11. Insanoff

    Insanoff Активный пользователь

    С нами с:
    28 янв 2009
    Сообщения:
    16
    Симпатии:
    0
    Адрес:
    Гах
  12. Insanoff

    Insanoff Активный пользователь

    С нами с:
    28 янв 2009
    Сообщения:
    16
    Симпатии:
    0
    Адрес:
    Гах
    нашел!
    PHP:
    1. http://google.com/translate_t?langpair=$lg&text=$text
    надо добавить
    Код (Text):
    1. &ie=UTF-8&oe=UTF-8
    и
    PHP:
    1. http://google.com/translate_t?sl=$sl&tl=$tl&text=$text&ie=UTF-8&oe=UTF-8
    демо работает: http://mag.az/player/opit/ascript.php