草庐IT

MultiByteToWideChar

全部标签

c++ - 在 C++ 中将 UTF8 字符串转换为 UTF16 字符串

我正在使用VC6.0。我的项目是用Unicode编译的。我正在使用zlib1.1.3来扩充包含我的UTF-8字符串的文件。我以ASCII格式获取它,但我保证它全部是英文的,因此我可以将其作为UTF8字符串关联(可以吗?)。我已经使用了Codeproject中建议的函数如下:WCHAR*SMUUTF8toUTF16(LPCSTRutf8,int*pLen){WCHAR*ptr=NULL;*pLen=MultiByteToWideChar(CP_UTF8,0,utf8,-1,NULL,0);if(*pLen>1){ptr=(WCHAR*)malloc(*pLen);if(ptr){Mult

javascript - 从 C++ 函数返回字符串到 JavaScript

我有一个实现IDispatch接口(interface)的类(JSObject)。该类暴露给在我托管的Web浏览器控件(IWebBrowser2)中运行的JavaScript。在此处查看有关其工作原理的更多信息:CallingC++functionfromJavaScriptscriptrunninginawebbrowsercontrol我可以从我的JavaScript代码中调用JSObject,并且我可以接收返回的整数/长整数。但是当函数返回字符串(BSTR)时出现问题。这是IDispatch::Invoke()代码的一部分:intlenW=MultiByteToWideChar(

windows - 使用 MultiByteToWideChar

以下代码打印了所需的输出,但它在字符串末尾打印了乱码。最后一次调用MultiByteToWideChar有问题,但我不知道是什么。请帮忙??#include"stdafx.h"#include#includeusingnamespacestd;#includeintmain(int,char*[]){TCHARszPath[MAX_PATH];if(!GetModuleFileName(NULL,szPath,MAX_PATH)){cout 最佳答案 关于cbMultiByte参数,MSDN是这样说的:Ifthisparameter

windows - MultiByteToWideChar 无法识别某些韩文字符

此韩语文本(可打印引用)“2013-03-22=0E?@HD=0F05:30”无法通过MultiByteToWideChar正确转换为Unicode。Quoted-printableformhere只是为了放置这段文字,实际内容包含0xE和0xF字节。MultiByteToWideChar(50225,0,bs.pData,bs.nSize,pData+nSize,nConvertedLen);=0E?@HD=0F按原样转换,生成的Unicode包含0xE和0xFASCII字符。但是,我发现那里应该出现几个韩语字符而不是这些字符。我一直认为国际字符序列以代码大于127的字节开头,但最近

c++ - 将 C 字符串从本地编码转换为 UTF8

我正在编写一个小应用程序,我在其中从控制台读取一些文本,然后将其存储在经典的char*字符串中。碰巧我需要将它传递给一个只接受UTF-8编码字符串的库。由于Windows控制台使用本地编码,我需要从本地编码转换为UTF-8。如果我没记错的话,我可以使用MultiByteToWideChar(..)编码为UTF-16,然后使用WideCharToMultiByte(..)转换为UTF-8。但是我想知道是否有一种方法可以在不使用任何外部库的情况下直接从本地编码转换为UTF-8,因为转换为wchar的想法只是为了能够转换回char(utf-8编码但仍然)对我来说有点奇怪。

C#回调接收UTF8字符串

我有一个C#函数,一个回调,从用C++编写的Win32DLL调用。来电者给了我一个UTF8字符串,但我无法正常接收,所有匈牙利语特殊字符都出错了。[UnmanagedFunctionPointer(CallingConvention.Cdecl)]publicdelegateintfunc_writeLog(strings);当我将参数类型更改为IntPtr并编写代码时,它可以正确编写。但我发现这是一个非常缓慢的解决方案:byte[]bb=newbyte[1000];inti=0;while(true){byteb=Marshal.ReadByte(pstr,i);bb[i]=b;if

c++ - 如何使用 MultiByteToWideChar?

我想将普通的string转换为wstring。为此,我尝试使用WindowsAPI函数MultiByteToWideChar.但这对我不起作用。这是我所做的:stringx="Thisisc++notjava";wstringWstring;MultiByteToWideChar(CP_UTF8,0,x.c_str(),x.size(),&Wstring,0);最后一行产生编译错误:'MultiByteToWideChar':cannotconvertparameter5from'std::wstring*'to'LPWSTR'如何解决这个错误?另外,参数cchWideChar的值应该

c++ - 如何使用 MultiByteToWideChar?

我想将普通的string转换为wstring。为此,我尝试使用WindowsAPI函数MultiByteToWideChar.但这对我不起作用。这是我所做的:stringx="Thisisc++notjava";wstringWstring;MultiByteToWideChar(CP_UTF8,0,x.c_str(),x.size(),&Wstring,0);最后一行产生编译错误:'MultiByteToWideChar':cannotconvertparameter5from'std::wstring*'to'LPWSTR'如何解决这个错误?另外,参数cchWideChar的值应该

c++ - 如何正确使用 MultiByteToWideChar

我正在使用MultiByteToWideChar将我的字符串转换为wstring。我首先尝试为我的wstring获取所需的大小。根据将0作为最后一个参数传递的文档应该可以完成此操作。使用MultiByteToWideChar(CP_UTF8,MB_COMPOSITE,str.c_str(),-1,nullptr,0);返回0作为wstring缓冲区的所需大小。我已经验证str也是一个非空字符串。我在这里做错了什么? 最佳答案 来自MSDNdocumentation:ForUTF-8orcodepage54936(GB18030,st

c++ - 什么是 : MultiByteToWideChar & WideCharToMultiByte? 的 Linux 等价物

我正在使用一个包装std::wstring的类,此代码需要跨平台,是否有Windows函数的等价物:Linux上的MultiByteToWideChar和WideCharToMultiByte?谢谢。 最佳答案 Linux等价物是iconv函数iconv_open,iconv和iconv_close(例如man3iconv_open等文档)。对于跨平台应用程序,请使用专用库,例如​​ICU反而。这样的库已经包含了它们自己的字符串类;无需包装std::wstring。 关于c++-什么是:
12