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

    +163

    1. 1
    2. 2
    3. 3
    <?php
    namespace application;
    header('Content-Type: text/html; charset=windows-1251');

    Кто-то любит BDSM, а кто-то windows-1251

    Запостил: Onotole, 17 Марта 2015

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

    • больной ублюдок
      Ответить
      • Из тех кто смотрел, это её цитата дословно или просто показывает её отношение? Надо бы достать Director Cut's
        Ответить
    • 50 оттенков кодировок великого-могучего.
      У нас в одном проекте смешались исходники на utf8, cp1251, cp866 и koi8r. Просьбы авторов перевести всё на utf8 были перенаправлены в жопу; хорошо, что этот ад уже завершился :)
      Ответить
      • > У нас в одном проекте смешались исходники на utf8, cp1251, cp866 и koi8r.
        Бро, дай я тебя обниму!

        P.S. Правда у нас 866, слава богу, в исходниках нету. Но есть в некоторых других местах...
        Ответить
        • После этого мне хочется крича и размахивая руками бежать в закат
          Ответить
          • А теперь представь себе скрипт в koi8-r, который получает запросы в utf-8, общается с базой в cp866 и выплёвывает ответ в cp1251...

            Слава богу, у нас таких нет. Пронесло.
            Ответить
            • P.S. Зато у нас был скрипт, у которого сообщения набраны в cp1251, а комментарии - в koi8-r. Что курил автор - я не знаю.
              Ответить
              • наверное принимал kokoi8n
                Ответить
                • Кстати 1251 это действительно так плохо?
                  Ответить
                  • одного байта хватит для всех символов (c) билл гейтс
                    Ответить
                    • Всякую хрень ему приписывают школьники. А он даже про 640кб ничего не говорил.
                      Ответить
                      • (c) балмер
                        Ответить
                      • Школьники сейчас уверены, что все технологии изобрел Стив Джобс. А Билл Гейтс -максимум чувак, который написал хейло
                        Ответить
                        • https://pbs.twimg.com/media/Bw9RqfBIEAAFzSN.jpg

                          (это он по серьезу тогда заявил)
                          Ответить
                          • Бред. Все же знают, что Apple произошел от Xerox Alto OS. А уже он - проект СССР
                            Ответить
      • В чем проблема, если в файле явно указана кодировка?
        Ответить
    • но это же только в namespace application!
      Ответить
    • Адепты Попова! Они все еще живы и научились пользоваться неймспейсами.
      Ответить
      • То, что они наконец начали указывать своё зловонное цп1251 в заголовках, не может не радовать.
        Ответить
        • Ага. Автодетект кодировки - одна из самых больших ошибок в истории браузеров.
          Ответить
          • Любые кодировки, кроме UTF-8 - самая большая ошибка в истории кодировок.
            Ответить
            • даже юнисекскод?
              Ответить
            • экономия на байтах же.
              Ответить
            • >Любые кодировки, кроме UTF-8 - самая большая ошибка в истории кодировок.
              А как же ASCII?
              Ответить
              • > А как же ASCII?
                А это - одна из самых лютых ошибок в истории программирования. Настолько лютая, что даже в 2015 году многие проги, написанные в районе америки, от неё страдают... У них же всё работает.
                Ответить
                • Эээ. Оригинальная ascii занимала 7-бит, и все ваши utf-8, cp1251 и 866 по-прежнему её юзают.
                  >А это - одна из самых лютых ошибок в истории программирования.
                  Тогда не используй её, в чём проблема. Пробел не кодируй в 0x20 итд где-то до буковки "z" или знака ~.
                  Ответить
                  • Проблема в том, что некоторые индивиды ограничиваются той самой 7-битной ASCII или её расширением latin1. А потом ты пытаешься создать ярлычок с русским именем, а управляющий демон падает нахуй. Потому что энкоднули в ascii/latin1 вместо utf-8 (или текущей локали, хотя бы) и у них всё работало...

                    > все ваши utf-8, cp1251 и 866 по-прежнему её юзают
                    Вот в том и трабла - ascii породила 100500 несовместимых кодировок.
                    Ответить
                    • > Вот в том и трабла - ascii породила 100500 несовместимых кодировок.
                      Создавая иллюзию совместимости на первых 128 символах. Вот если бы все кодировки были совсем разными - народ бы быстрее задумался о юникоде и utf-8.
                      Ответить
                  • > Тогда не используй её, в чём проблема.
                    Встречался, может быть, с труъ семибитной кодировкой в смсках? Вот там по этому пути и пошли... Парсить её тот еще пиздец. Зато аж 140 символов латиницы влезает в 128 байтный пакет!
                    Ответить
                    • Встречался.
                      >Парсить её тот еще пиздец.
                      Чего? Просто 7-битную кодировку создавали под семибитные машины.

                      >Вот в том и трабла - ascii породила 100500 несовместимых кодировок.
                      Это как K&R обвинять в том что наворотил Сиплюструп.

                      >Создавая иллюзию совместимости на первых 128 символах.
                      Тот же base64 прекрасен http-gzip практически убивает избыточность.
                      Ответить
                      • > Парсить её тот еще пиздец.
                        > Чего?
                        Ну SMS'очная кодировке реально 7-битная - в 7 байтах лежит 8 символов. Вот поэтому парсить её - тот ещё пиздец. И маловероятно, что эту кодировочку пилили под 7-битные машины. Всё-таки сотики - достаточно свежее изобретение.
                        Ответить
                        • >Ну SMS'очная кодировке реально 7-битная. Поэтому в 7 байтах лежит 8 символов.
                          Это понятно, но столо прочитать до конца:
                          >>>Просто 7-битную кодировку создавали под семибитные машины.
                          На момент разработки была отличная кодировка.
                          Ответить
                          • > На момент разработки была отличная кодировка.
                            Но ведь SMS'очную кодировку разрабатывали не под 7-битные машины... Вики говорит, что смски на GSM в 93м году появились.
                            Ответить
                            • Но ведь я и не говорил о GSM кодировке, я говорил об ASCII.
                              Ответить
                            • Причём тут вообще SMS (кроме как пример труЪ 7-битной кодировки)?
                              GSM 03.38!=ASCII
                              Они имеют совсем разные кодовые таблицы
                              . 	0x00	0x10	0x20	0x30	0x40	0x50	0x60	0x70
                              0x00	@	Δ	SP	0	¡	P	¿	p
                              0x01	£	_	!	1	A	Q	a	q
                              0x02	$	Φ	"	2	B	R	b	r
                              0x03	¥	Γ	#	3	C	S	c	s
                              0x04	è	Λ	¤	4	D	T	d	t
                              0x05	é	Ω	%	5	E	U	e	u
                              0x06	ù	Π	&	6	F	V	f	v
                              0x07	ì	Ψ	'	7	G	W	g	w
                              0x08	ò	Σ	(	8	H	X	h	x
                              0x09	Ç	Θ	)	9	I	Y	i	y
                              0x0A	LF	Ξ	*	:	J	Z	j	z
                              0x0B	Ø	ESC	+	;	K	Ä	k	ä
                              0x0C	ø	Æ	,	<	L	Ö	l	ö
                              0x0D	CR	æ	-	=	M	Ñ	m	ñ
                              0x0E	Å	ß	.	>	N	Ü	n	ü
                              0x0F	å	É	/	?	O	§	o	à
                              Ответить
                              • > Причём тут вообще SMS (кроме как пример труЪ 7-битной кодировки)?
                                Я её привёл как пример труЪ 7-битной кодировки, несовместимой с ASCII.
                                Ответить
                                • >Я её привёл как пример труЪ 7-битной кодировки, несовместимой с ASCII.
                                  Ну то есть основной пиздец не в том что она 7-битная, а в том что она несовместима с ASCII, верно?
                                  Ответить
                                  • > основной пиздец не в том что она 7-битная
                                    Основной пиздец в том, что семибитную кодировку компактно упихали в восьмибитные байты. Рай для байтоёба.

                                    > несовместима с ASCII
                                    А вот это, как раз, совсем не мешает. Один хер табличку для перекодировки пришлось бы мутить.
                                    Ответить
                                    • >Основной пиздец в том, что семибитную кодировку компактно упихали в восьмибитные байты. Рай для байтоёба.
                                      Если б они упихали некомпактно я полагаю это вызвало гораздо больше БАЙТОНЕГОДОВАНИЯ.
                                      На самом деле написать 1 раз функцию передрочки можно за час (еще и с тестами) или даже быстрее. Не вижу проблемы.
                                      Ответить
                              • А почему тут так мало греческих букв? Да и зачем они тут?

                                - Тут место осталось, всего 10 символов. Не знаем, что делать.
                                - А не х*йнуть ли нам 10 рандомных греческих букв?
                                - Отличная идея, шеф!
                                Ответить
                                • >А почему тут так мало греческих букв?

                                  Это не бета, а немецкая буква (читается как ss или z, не помню)
                                  ß

                                  Там вообще полно всяких западноеуропейских букв типа гласных с амляутами, скандинавских (ø,Å), турецких (Ç) и еще хер знает каких.
                                  Ответить
                                  • эс как groß

                                    Нет, я скорее 0x11 добавил к греческим вместе с 0x10..0x1A.
                                    Ответить
                                    • Короче отовсюду откуда могли напихали.
                                      Мне думается большинство греческих в капсе имеет такой же вид как и латинские.
                                      А они добавили только отсутствующие
                                      Αα	Alpha	Νν	Nu
                                      Ββ	Beta	Ξξ	Xi
                                      Γγ	Gamma	Οο	Omicron
                                      Δδ	Delta	Ππ	Pi
                                      Εε	Epsilon	Ρρ	Rho
                                      Ζζ	Zeta	Σσς	Sigma
                                      Ηη	Eta	Ττ	Tau
                                      Θθ	Theta	Υυ	Upsilon
                                      Ιι	Iota	Φφ	Phi
                                      Κκ	Kappa	Χχ	Chi
                                      Λλ	Lambda	Ψψ	Psi
                                      Μμ	Mu	Ωω	Omega
                                      Так што есть греки смогут писать капсом на родном языке, при этом не транслитя.
                                      Ответить
              • Использовать ASCII в любых сетевых приложениях, работающих выше L3, или вообще не использующих сеть - ошибка в ДНК программиста.
                Ответить
                • Если в качестве айдишек - почему бы и нет?
                  Ответить
                • >Использовать ASCII в любых сетевых приложениях, работающих выше L3, или вообще не использующих сеть - ошибка в ДНК программиста.
                  Поделись, из какой таблицы кодирования, по-твоему, берутся коды для символов в ссылке http://govnokod.ru/17807?
                  Ответить
                  • >>> meta http-equiv="Content-Type" content="text/html; charset=utf-8"
                    Из UTF-8.
                    Ответить
                    • >Из UTF-8.
                      Ээээ.
                      UTF-8 was designed for backward compatibility with ASCII and to avoid the complications of endianness and byte order marks in UTF-16 and UTF-32.

                      А так как все символы имеют коды <128, то они кодируются старой-доброй ASCII.
                      Ответить
                      • > все символы имеют коды <128
                        Это они там имеют. А парой слов раньше, на фразе "для символов в ссылке" - не имеют.
                        Ответить
                        • Просто кликни на ссылку и поймешь что входит в неё, а что нет.
                          Ответить
                      • > backward compatibility with ASCII
                        Ответить
                        • The first 128 characters of Unicode, which correspond one-to-one with ASCII, are encoded using a single octet with the same binary value as ASCII, making valid ASCII text valid UTF-8-encoded Unicode as well.
                          Любой текст в ASCII - это текст в UTF-8.
                          Ответить
                          • Я о том, что в современных приложениях всё надо кодировать в UTF-8. А уж какие коды UTF-8 использует - без разницы.
                            Ответить
            • Случайный доступ за O(n)
              Ответить
              • А кто сказал, что представления в памяти и на диске/в сети должны совпадать?
                Ответить
                • >>А кто сказал, что представления в памяти и на диске/в сети должны совпадать?
                  У нас в одном проекте смешались исходники на utf8, cp1251, cp866 и koi8r. Просьбы авторов перевести всё на utf8 были перенаправлены в жопу;

                  GOTO 20: http://govnokod.ru/17807#comment267195
                  Ответить
                  • Дык у них сами исходники были в разных кодировках. Не то что файлы с данными или строки в памяти...
                    Ответить
                    • Ну вот так и получается
                      1. кто сказал, что представления в памяти и на диске/в сети должны совпадать?
                      2. у вас на диск пишется в cp866, а по сети utf-8, у меня винда ну чем нам помешает лишняя cp1251?
                      3. ...
                      4. Помогите, смешались кодировки utf8, cp1251, cp866 и koi8r. ЧТО ДЕЛАТЬ?
                      Ответить
                      • > ЧТО ДЕЛАТЬ?
                        Тащемта, если в памяти какое-то из представлений юникода - ничего не делать. Только не забывать выставить правильную кодировку на стримах и коннектах к БД.
                        Ответить
                • Это был ответ на
                  >Любые кодировки, кроме UTF-8 - самая большая ошибка в истории кодировок.
                  Ответить

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