1. PHP / Говнокод #6807

    +175

    1. 01
    2. 02
    3. 03
    4. 04
    5. 05
    6. 06
    7. 07
    8. 08
    9. 09
    10. 10
    11. 11
    12. 12
    13. 13
    14. 14
    15. 15
    16. 16
    17. 17
    18. 18
    19. 19
    20. 20
    21. 21
    22. 22
    23. 23
    24. 24
    25. 25
    26. 26
    27. 27
    28. 28
    29. 29
    30. 30
    31. 31
    32. 32
    33. 33
    34. 34
    35. 35
    36. 36
    37. 37
    38. 38
    function enc($text) {
    
    $bad_symbols =  array('ï', 'î', 'é', 'è', 'ì', 'å', 'í', 'õ', 'Ö', 'Ç',
                          'Â', 'â', 'ó', 'ç', 'ä', 'à', 'Í', 'ò', 'Ð', 'ÿ',
    	        'ñ', 'Ì', 'ë', 'ý', 'ö', 'ã', 'Ñ', 'Ô', 'Ï', 'ü',
    	        'Ã', 'ð', 'æ', 'á', 'À', '¸', 'ù', 'Ê', 'ê', 'Á',
    	         '÷', 'Ý', 'û', 'Ë', 'È', 'Ò', 'ß', 'þ', 'Ä', 'Î',
    	        'Ó', 'Å', 'Æ', 'Û', 'ø', 'ô', '×', '¹', '³', 'Õ', 'Þ', 'Ø');
    					  
    $good_symbols = array('п', 'о', 'й', 'и', 'м', 'е', 'н', 'х', 'Ц', 'З',
                          'В', 'в', 'у', 'з', 'д', 'а', 'Н', 'т', 'Р', 'я',
    	        'с', 'М', 'л', 'э', 'ц', 'г', 'С', 'Ф', 'П', 'ь',
                          'Г', 'р', 'ж', 'б', 'А', 'ё', 'щ', 'К', 'к', 'Б',
    	         'ч', 'Э', 'ы', 'Л', 'И', 'Т', 'Я', 'ю', 'Д', 'О',
    	         'У', 'Е', 'Ж', 'Ы', 'ш', 'ф', 'Ч', '№', 'і', 'Х', 'Ю', 'Ш');
     
    $text_rus = str_replace($bad_symbols, $good_symbols, $text, $count);
    
    				
    // Восстанавливаем японские иероглифы
    $bad_symbols =  array('іх', 'Тф', 'ҐЇ', 'Ґё', 'ҐЯ', '©`', 'Ґµ', 'Ґа', 'ь\\', '¤¦', '¤µ', 'Ґ«', 'Ґу', 'Ґї', 'Ґм', 'Ґй',
                          'Ґ¦', 'ҐЙ', 'Ґ·', 'Ґ°', 'ҐК', 'Ґл', 'Ґк', 'Ґи', 'ЈЁ', 'Ј©', 'ЈЬ', 'ЈЇ', 'Бч', 'РЗ', 'СІ', 'зR',
    	         'ВЇ', 'РД', 'ИЪ', 'Ѕв', 'ҐЄ', 'Ґп', 'Ґі', 'РР', 'ЯM', 'Зъ', 'ҐИ', '¤н', '¤ї', '¤у', '¤А', '±°',
    	        'ЗУ', '‘й', 'к ', 'ҐЬ', 'Ґн', '¤П', '¤д', '‰ф', '¤Я', '¤л', '¤і', '¤И', '¤к');
    					  
    $good_symbols = array('初', '音', 'ク', 'ジ', 'ミ', 'ー', 'サ', 'ム', '黒', 'う', 'さ', 'カ', 'ン', 'タ', 'レ', 'ラ',
                          'ウ', 'ド', 'シ', 'グ', 'ナ', 'ル', 'リ', 'ヨ', '(', ')', '\', '/', '流', '星', '巡', '鏡',
    	        '炉', '心', '融', '解', 'オ', 'ワ', 'コ', '行', '進', '曲', 'ト', 'ろ', 'た', 'ん', 'だ', '卑',
    	        '怯', '戦', '隊', 'ボ', 'ロ', 'は', 'や', '夢', 'み', 'る', 'こ', 'と', 'り');
    
    $text_jap = str_replace($bad_symbols, $good_symbols, $text_rus, $count2);
    
    if ($count > 3)
        return $text_rus;
    elseif ($count2 > 3)
        return $text_jap;
    else return $text;
    }

    Декодер кривых тегов на интернет-радио.
    Написано год назад.
    Я, конечно, знал про iconv, но очень хотелось решить головоломку - имелся тег, который я знал, что значит в верной кодировке. А остальные я не знал, что значат.
    И в итоге, зная некоторые соответствия символов win-1252 и win-1251, стал отгадывать соответствия к остальным :)
    А дальше - высший пилотаж, это даже iconv не брал.
    Японские иероглифы, испорченные хрен знает как. Знал только как расшифровывается имя одного исполнителя.
    Дальше гуглом и методом тыка искал соответствия к остальным иероглифам.

    Запостил: 7ion, 01 Июня 2011

    Комментарии (19) RSS

    • Отступы все похерились. Печаль.
      Ответить
    • >Отступы все похерились.
      Та отож...

      Интересно сравнить время затраченное на поиск в гугле и время на освоение iconv.
      С другой стороны, умение писать велосипеды может пригодиться, если нужен,например, самокат.
      Ответить
      • Да знаю я iconv.
        Я ж говорю - от нехер делать поставил перед собой такую задачу-головоломку.
        Ответить
    • А в случае нахождения новых иероглифов, которые не отображаются, добавлять новые элементы в массив?
      Ответить
      • Ну да.
        Ответить
        • Я сейчас подсчитал: у меня в тегах музыки всего используется чуть больше тысячи иероглифов. Хотелось бы увидеть соответствующие массивы. И узнать, насколько быстро ПХП работает с массивами такого размера.

          Хотя иногда, в условиях отсутствия интернета, и не такие велосипеды создавались. А так — вполне нормальный способ решения конкретной задачи «в лоб»
          Ответить
          • Интереснее, насколько быстро кодер будет набивать соответствия.
            Ответить
    • Мсье знает толк...
      Ответить
    • В японском случайно оказалaсь только небольшая часть хираганы, чуть больше катаканы и какие-то случайные пара китайских иероглифов. Прям скажем оч странный конвертер :) На сколько я помню, в слоговой азбуке (для детей) что-то около 30 знаков, у каждого по 4 вариации. В азбуке для иностранной фонетики - что-то около 40. А китайских иероглифов, ну, если говорить о том, что есть в Юникоде, то что-то около 3 тысячь вроде... опять же, их есть 2 варианта написаний, которые в свою очередь соответствуют разным кодам.
      Ответить
      • > А китайских иероглифов, ну, если говорить о том, что есть в Юникоде, то что-то около 3 тысяч
        Чуток ошибся. В Юникоде для них отведено 5 диапазонов, 47614 + 20991 + 100607 + 511 + 2047 = 171 770 штук.
        Ответить
        • Чет как-то очень много... их просто физически нет столько. Вернее, их конечно можно понапридумывать бесконечное множество... Может это как диакритики / лигатуры и т.п?
          Ответить
    • > Ð
      Смеялся после этого символа.
      Ответить
    • WEEABOO!
      http://dobrochan.ru/src/jpg/1005/japan-bash-a-country-assignment-demotivational-pos.jpg
      Ответить
    • Т.е., когда тебе было 16, школокод бесмысленный и беспощадный
      Ответить
    • показать все, что скрытоvanished
      Ответить

    Добавить комментарий