Utf 8 字符数组数据的解码

Utf 8 字符数组数据的解码,utf-8,uwp,c++-cli,Utf 8,Uwp,C++ Cli,我有一个网格,我需要从中读取的顶点位置,但我可以得到一个缓冲区的数据,我似乎可以得到一个utf-8字符数组 目前我正在将缓冲区中的数据放入我遇到的数组中,并将其写入一个字符*中,但我无法正确解码,或者看起来是这样 以下代码从缓冲区读取dara: char* GetDataFromIBuffer(Windows::Storage::Streams::IBuffer^ container) { unsigned int bufferLength = container->Length;

我有一个网格,我需要从中读取的顶点位置,但我可以得到一个缓冲区的数据,我似乎可以得到一个utf-8字符数组

目前我正在将缓冲区中的数据放入我遇到的数组中,并将其写入一个字符*中,但我无法正确解码,或者看起来是这样

以下代码从缓冲区读取dara:

char* GetDataFromIBuffer(Windows::Storage::Streams::IBuffer^ container)
{
   unsigned int bufferLength = container->Length;
   auto dataReader = Windows::Storage::Streams::DataReader::FromBuffer(container);
   Platform::Array<unsigned char>^ managedBytes =
    ref new Platform::Array<unsigned char>(bufferLength);
   dataReader->ReadBytes(managedBytes);

  char * bytes = new char[bufferLength]; 

  for (unsigned int i = 0; i < bufferLength; i++)
  {
    if (managedBytes[i] == '\0')
    {
        bytes[i] = '0';
    }
    else
    {
        bytes[i] = managedBytes[i];
    }
  }
}
char*GetDataFromIBuffer(Windows::Storage::Streams::IBuffer^容器)
{
unsigned int bufferLength=容器->长度;
自动dataReader=Windows::Storage::Streams::dataReader::FromBuffer(容器);
平台::阵列^managedBytes=
ref新平台::数组(缓冲区长度);
dataReader->ReadBytes(managedBytes);
char*bytes=新字符[bufferLength];
for(无符号整数i=0;i
我可以在调试模式下查看数据,但我需要一种方法使其可读并将其写入文件,在该文件中,我可以复制网格数据并在单独的程序中绘制网格

下图显示了可以在阵列中看到的阵列数据:

小心不要混淆文本编码和数据类型

char是一种常用于缓冲区的类型,因为它有字节大小,但这并不意味着缓冲区中包含的数据是文本

调试视图似乎确认缓冲区中的数据不是文本,因为当解释为文本时,它会给出奇怪的字符,如“ÿ”、“^”等

UTF-8是一种编码unicode文本的方法,因此它与二进制数据无关


<>你需要找到一种方法来把你的缓冲区数据信息转换为内部数据类型,它应该被记录在你得到数据的地方(也许只是漂浮的数组)?/p>这看起来是C++ + CLI,而不是C++。请正确地标注你的问题。我只关心C++部分,所以我更新了代码示例以使它更清楚。对我来说,重要的部分是将managedBytes放在一个char*中,这个char*表示我需要的数据。自从 Windows::存储::流:IBuffer ^ 无效C++,但有效C++ + CLI,不能使用C++。谢谢,下一次做正确:谢谢,这听起来像是我应该研究的方法。到目前为止,还没有直接的方法将其保存到浮点数组中,但我会看看是否能让它工作。