
public void SendMSGType(string msg, string type)
{
if (type == "notice")
SendPacketToClient(Opcodes.LocalNotice(msg));
}

public static Packet LocalNotice(string msg)
{
return PacketBuilder.BuildPacket(0x3026, (byte)7, msg);
}

private static void BuildPacket(this Packet pck,object[] content)
{
if(content.Count() > 0)
{
Parallel.ForEach(content.AsParallel(), obj =>
{
if (obj.GetType() == typeof(string))
pck.WriteAscii(obj);
if (obj.GetType() == typeof(ushort))
pck.WriteUInt16(obj);
if (obj.GetType() == typeof(uint))
pck.WriteUInt32(obj);
if (obj.GetType() == typeof(ulong))
pck.WriteUInt64(obj);
});
}
}

public void WriteAscii(String value)
{
WriteAscii(value, 1254);
}
public void WriteAscii(String value, int code_page)
{
lock (m_lock)
{
if (m_locked)
{
throw new Exception("无法在锁定的数据包上进行写操作。");
}
//这3行代码是程序原版的
//byte[] bytes = Encoding.GetEncoding(code_page).GetBytes(value);
//m_writer.Write((ushort)bytes.Length);
//m_writer.Write(bytes);
//这3行代码是我写的,但转换为UTF8编码,游戏内中文依旧乱码。
byte[] bytes = Encoding.GetEncoding("utf-8").GetBytes(value);
m_writer.Write((ushort)bytes.Length);
m_writer.Write(bytes);
}
}
上面是整个调用过程涉及的函数,功能是向一个游戏内写入一些文本信息。
问题:该程序不支持中文字符。
请问如何修改才能支持中文字符?
我对C#不了解,希望大家帮帮我,谢谢!