Το πρόβλημα είναι ακριβώς ότι το πρόγραμμά σου χειρίζεται UNICODE χαρακτήρες ενώ ο εκτυπωτής περιμένει χαρακτήρες σε 437 encoding. Για να τυπώσεις, θα πρέπει να μετατρέψεις το string στο κατάλληλο encoding.
Για ποιο λεπτομερή απάντηση θα πρέπει να μας πεις αν χρησιμοποιείς Compact Framework ή C++. Η απάντηση είναι διαφορετική σε κάθε περίπτωση.
Αν γράφεις σε Compact Framework, μπορείς να χρησιμοποιήσεις τον παρακάτω κώδικα για να μετατρέψεις ένα unicode string στο codepage 737 (το 437 για ελληνικούς χαρακτήρες στα Windows):
using System;
using System.Collections;
using System.Text;
public class MyClass
{
public static void Main()
{
string sourceString="Καλημέρα.";
Encoding encoding737 = Encoding.GetEncoding(737);
Encoding unicode = Encoding.Unicode;
// Convert the string into a byte[].
byte[] unicodeBytes = unicode.GetBytes(sourceString);
// Perform the conversion from one encoding to the other.
byte[] bytes737 = Encoding.Convert(unicode, encoding737, unicodeBytes);
char[] chars737 = new char[encoding737.GetCharCount(bytes737, 0, bytes737.Length)];
encoding737.GetChars(bytes737, 0, bytes737.Length, chars737, 0);
//Convert the chars to string and print them
string string737 = new string(chars737);
Console.WriteLine("Initial String: {0}",sourceString);
Console.WriteLine("Converted String: {0}",string737);
Console.ReadLine();
}
}
Kαλό πάντως είναι να μην γράφεις μόνο κεφαλαία. Τα κεφαλαία υπονοούν ότι "φωνάζεις". Άσε που είναι κουραστικά στην ανάγνωση! ![Confused [8-)]](/cs/emoticons/emotion-43.gif)
Παναγιώτης Καναβός, Freelancer
Twitter: http://www.twitter.com/pkanavos