Sto cercando di leggere caratteri stranieri da un file .ini. Questo è il metodo che sto usandoFile in lettura caratteri stranieri
[DllImport("kernel32")]
public static extern int GetPrivateProfileString(string Section,
int Key,
string Value,
[MarshalAs(UnmanagedType.LPArray)] byte[] Result,
int Size,
string FileName);
public static string[] GetEntryNames(string section, string iniPath)
{
for (int maxsize = 500; true; maxsize *= 2)
{
byte[] bytes = new byte[maxsize];
int size = Imports.GetPrivateProfileString(section, 0, "", bytes, maxsize, iniPath);
if (size < maxsize - 2)
{
string entries = Encoding.ASCII.GetString(bytes, 0,
size - (size > 0 ? 1 : 0));
Console.WriteLine("Entries: " + entries.Split(new char[] { '\0' })[3]);
return entries.Split(new char[] { '\0' });
}
}
}
Sto usando ma a quanto pare non è GetPrivateProfileString
. I byte che escono da esso hanno bisogno di una codifica probabilmente. Come lo posso fare?
Edit: Esempio
Questo stamperà: Tavar? invece di Tavaré
Sei sicuro che non sta leggendo correttamente, invece di essere solo 'Console.WriteLine'? – LegionMammal978
@ LegionMammal978 Sì. Impostalo su un'etichetta e ottieni lo stesso risultato –
@JohnP. Prova a usare 'Encoding.UTF8' o' Encoding.GetEncoding ("iso-8859-1") 'per il carattere francese – Xiaoy312