Помогите разобраться с кодировкой!
Пишу я чат для своей локалки. Как основу взял пример из MSDN. но!
правильно отображаются только английские буквы!
помогите пожалуйста!!!
private void DoRead(IAsyncResult ar)
{
int BytesRead;
string strMessage;
try
{
// Finish asynchronous read into readBuffer and return number of bytes read.
BytesRead = client.GetStream().EndRead(ar);
if (BytesRead < 1) {
// if no bytes were read server has close. Disable input window.
MarkAsDisconnected();
return;
}
// Convert the byte array the message was saved into, minus two for the
// Chr(13) and Chr(10)
strMessage = System.Text.Encoding.ASCII.GetString(readBuffer,0,BytesRead-2);
ProcessCommands(strMessage);
// Start a new asynchronous read into readBuffer.
client.GetStream().BeginRead(readBuffer, 0, READ_BUFFER_SIZE, new AsyncCallback(DoRead), null);
}
catch( Exception ex)
{
MarkAsDisconnected();
}
}
объявление:
const int READ_BUFFER_SIZE = 255;
const int PORT_NUM = 10000;
private TcpClient client;
private byte[] readBuffer = new byte[READ_BUFFER_SIZE];
Спасибо заранее!
Цитата:
strMessage = System.Text.Encoding.[color=red]ASCII[/color].GetString(readBuffer,0, BytesRead-2);
, используй Юникод и будут тебе русские буквы отображаться
ага, я пробовал. только вот тогда вообще ничего не работает! комманды сервер вообще не понимает!не, наврал. комманды понимает, пользователей присоединяет, но вот клиенты ничег не читают с входного потока. и не показывают список пользователей
Цитата: xxxXxFeLiXxXxxx
ага, я пробовал. только вот тогда вообще ничего не работает! комманды сервер вообще не понимает!не, наврал. комманды понимает, пользователей присоединяет, но вот клиенты ничег не читают с входного потока. и не показывают список пользователей
Дык дело тогда не в кодировке а в твоем коде. Как-то сам писал подобный чат использовал Юникод и все работало на ура
Цитата: koval
Дык дело тогда не в кодировке а в твоем коде. Как-то сам писал подобный чат использовал Юникод и все работало на ура
хм... я вроде код примера не менял ... кстати если сервер пишет броадкаст на русском, все прекрасно его читают.
private void SendToClients(string strMessage, UserConnection sender)
{
UserConnection client;
// All entries in the clients Hashtable are UserConnection so it is possible
// to assign it safely.
foreach(DictionaryEntry entry in clients)
{
client = (UserConnection) entry.Value;
// Exclude the sender.
if (client.Name != sender.Name)
{
client.SendData(strMessage);
}
}
}
наверно дело в этом. как же тут явно задать кодировку???
надо было на сервере кодировку в классе userconnection тоже поменять. а я не заметил )))