| 网站首页 | 业界新闻 | 小组 | 威客 | 人才 | 下载频道 | 博客 | 代码贴 | 在线编程 | 编程论坛
欢迎加入我们,一同切磋技术
用户名:   
 
密 码:  
共有 1746 人关注过本帖
标题:网络编程中文乱码问题
只看楼主 加入收藏
rohalloway
Rank: 6Rank: 6
等 级:侠之大者
威 望:8
帖 子:97
专家分:405
注 册:2018-9-28
结帖率:75%
收藏
 问题点数:0 回复次数:0 
网络编程中文乱码问题
程序代码:
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#不了解,希望大家帮帮我,谢谢!
搜索更多相关主题的帖子: void string obj Write value 
2019-07-29 12:30
快速回复:网络编程中文乱码问题
数据加载中...
 
   



关于我们 | 广告合作 | 编程中国 | 清除Cookies | TOP | 手机版

编程中国 版权所有,并保留所有权利。
Powered by Discuz, Processed in 0.023346 second(s), 8 queries.
Copyright©2004-2024, BCCN.NET, All Rights Reserved