UTF-8 Данные теряются при использовании метода Methodinfo.invoke для вызова метода c# из c ++ - PullRequest
0 голосов
/ 13 апреля 2020

Я вызываю класс do tNET из программы на C ++ с использованием метода methodinfo.invoke. Параметром для метода invoke является строка. Значение строки находится в кодовой странице UTF-8. При печати параметра через do tnet Метод это печать ASCII Charater. Данные теряются.

c ++ программа:

MethodInfo *mi = NULL;
char *param="Şəçüöğ";
String *args[] = new String*[1]; 
 args[0]= new String(param);  
printf("from try %s",args[0]);
String *str=static_cast<String*>(mi->Invoke(o,args));

C#:

using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;

namespace T24Unicode
{
    public class UnicodeTest
    {
        public string GetData(string text1)
        {

         byte[] utf = System.Text.Encoding.UTF8.GetBytes(text1);
         string s2= System.Text.Encoding.UTF8.GetString(utf);
          Console.WriteLine("The value returned from .cs when writing the parameter using Console.WriteLine : "+s2);
          return text1;
         }
     }
}
output:

Значение, возвращаемое из .cs при записи параметра с использованием Console.WriteLine :

ÅžÉ ™ çüöğ

Может кто-нибудь помочь с этим?

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...