Я вызываю класс 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 :
ÅžÉ ™ çüöğ
Может кто-нибудь помочь с этим?