UE4中FString转char* ,控制台字符输出乱码(不是编译期乱码)

刚接触ue4,原本想着一个很简单的打印字符串,找找博客就没事了 ,但是找来找去 不是要什么安装字体,就是vs只安装英文,启用 utf-8bate版,我只是想简单输出下字符打印啊!!!

 

刚用libuv网络库所以需要从editor就是FString拿到字符转换成char* ,内存中的数值是正常的中英文字符都是正常传输的,但是一到log就不行,谁有时间去一步步调试看内存中是什么啊,找来找去我觉得应该是ue4打印函数不支持utf-8,或者是gbk

是这样测试的->

    std::string tIp = TCHAR_TO_UTF8(*vIp);
    int nwLen = ::MultiByteToWideChar(CP_ACP, 0, tIp.c_str(), -1, NULL, 0);
    wchar_t* pwBuf = new wchar_t[nwLen + 1];
    ZeroMemory(pwBuf, nwLen * 2 + 2);
    ::MultiByteToWideChar(CP_ACP, 0, tIp.c_str(), tIp.length(), pwBuf, nwLen);
    int nLen = ::WideCharToMultiByte(CP_UTF8, 0, pwBuf, -1, NULL, NULL, NULL, NULL);
    char* pBuf = new char[nLen + 1];
    ZeroMemory(pBuf, nLen + 1);
    ::WideCharToMultiByte(CP_UTF8, 0, pwBuf, nwLen, pBuf, nLen, NULL, NULL);

 

其中pBuf是转出来的utf8字符集,结果是无用

 

还是要自己去思考才行

过了一会自己研究出来了,直接上代码吧,有时候不能只靠百度编程啊

 

其中主要的两句字符转换

FString 转 char*

connect(TCHAR_TO_UTF8(*vIp), vPort);

 

char* 转 tchar 打印在屏幕或者控制台(原来打印在editor上的字符是要tchar类型)

UE_LOG(Connector, Log, TEXT("connect::(ip:%s),(port:%d)"), UTF8_TO_TCHAR(ip), port);

我觉得一开始就得知道ue4的自定义数据类型的熟练使用,不然怎么筑起高楼。

  • 1
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值