Domanda

Secondo MSDN vb.net usa questo esteso set di caratteri . Nella mia esperienza è in realtà utilizza questa:

alt text

  1. Che cosa mi manca? Perché lo fa dire che utilizza l'uno e l'altro usa?
  2. sto facendo qualcosa di sbagliato?
  3. C'è una sorta di strumento di conversione per il set di caratteri originale?
È stato utile?

Soluzione

Questo comportamento è definito nella documentazione del Chr comando :

Il valore restituito dipende dalla pagina di codice per il thread corrente, che è contenuto nella proprietà ANSICodePage della classe TextInfo nello spazio dei nomi System.Globalization. È possibile ottenere ANSICodePage specificando System.Globalization.CultureInfo.CurrentCulture.TextInfo.ANSICodePage.

Quindi, l'uscita di Chr per valori superiori a 127 è dipendente dal sistema. Se si desidera che i risultati riproducibili, creare l'istanza desiderata di Encoding chiamando Encoding.GetEncoding (String ) , quindi utilizzare Encoding.GetChars (Byte ()) per convertire i valori numerici in caratteri.

Se salire di un livello nel grafico collegato nella vostra domanda, si vedrà che non sostengono che questo grafico è sempre l'output del comando Chr:

I personaggi che appaiono in Windows sopra 127 dipendono dal tipo di carattere selezionato.

I grafici di questa sezione mostrano il set di caratteri di default per un'applicazione console.

L'applicazione è un'applicazione di WinForm, non un'applicazione console. Anche nella console, il set di caratteri utilizzato può essere modificata (per esempio, utilizzando il comando chcp), da qui la parola "default".

Per informazioni dettagliate sulle codifiche utilizzate in .net, vi consiglio il seguente articolo di MSDN: Codifica dei caratteri nel .NET Framework.

Altri suggerimenti

Il primo set di caratteri è codice Pagina 437 (CP437), il secondo assomiglia codici 1252 (CP1252), noto anche come Windows Latin-1.

Direi VB.Net sta semplicemente raccogliendo la codifica di default per il PC.

Come hai scritto tutto questo? Perché di solito, quando si utilizza una funzione di flusso di uscita, è possibile specificare la codifica che va con esso.

Edit: so che questo non è C #, ma si può vedere l'idea ...

Si sarebbe dovuto impostare la codifica del vostro FileStream, facendo qualcosa di simile a questo: Impostazione della codifica durante la creazione del filestream

Autorizzato sotto: CC-BY-SA insieme a attribuzione
Non affiliato a StackOverflow
scroll top