Все же знают (или не все?), что .net, по умолчанию, хранит строки в юникоде. Так почему же  я во всех примерах вижу такой код?

 

byte[] byteArray = GetBytes();
var retval = Encoding.ASCII.GetString(byteArray);

 

И что самое страшное в этом, так это то, что если байты представляют собой символы латинского алфавита, то, в большинстве случаев, всё будет замечательно работать. А когда работать оно перестаёт в содержимое строки примерно такое:

 

"\u0000"\u0000a\u0000"\u0000:\u00002\u00000...." 

 

Тогда все начинают громко ругаться и рвать на себе волосы со словами: "Ну ведь работало же! Да и вот в этом(http://www.google.com.ua/search?rlz=1C1GGLS_enUA335US335&sourceid=chrome&ie=UTF-8&q=c%23+byte+array+to+string) примере так написано!".

Хорошо, если мысль о неправильной кодировке прийдёт сразу, а если нет... Сколько времени/нервов потритит разработчик, прежде чем всё станит на свои места?

вышеприведённый пример лучше заменить на:

byte[] byteArray = GetBytes();
var retval = Encoding.Unicode.GetString(byteArray); 

Или даже на:

 

byte[] byteArray = GetBytes();
var retval = Encoding.Default.GetString(byteArray); 

 

 

 


Решать штабные заданния пока лениво. Играю один. Команда: e1team. Живой репортаж в титтере http://twitter.com/e0ne

Программания 2009

Published 10/9/2009 by e0ne in Offtopic

Завтра состоится очередной конкурс Программания. Другой формат. Не понятно зачем его таки делать. IMHO, лучше б уже не было. Заявку подал, но участие под вопросом.

P.S. Верните нам IT-Contest!

P.S.S. Получился не пост в блог, а сообщение для твиттера.