• 18-04-2020, 22:44:44
    #1
    Kimlik doğrulama veya yönetimden onay bekliyor.
    Merhaba;

    Bir termal printer mevcut. PHP ile sorunsuz yazdırabilinmekte. Ben Windows Form uygulaması ile printera TCP/IP üzerinden veri gönderdiğimde Türkçe karakter hatası vermekte. Kodlarım aşağıdaki gibi;

    string msg = "\n" +
    "Türkçe Karakter Test\n\n" +
    "ığüşöç İĞÜŞÖÇ\n\n" +
    "\x1Bm\0\0"; //kağıdı kes
    //Burada msg kontrol ediyorum TR Karakterler düzgün.
    
    
    //UTF8 'den başka aklınıza gelebilecek tüm karakter setlerini denedim.
    Byte[] data = Encoding.UTF8.GetBytes(msg);
    
    // Byte dizisini geri stringe çevirdiğimde Türkçe Karakterler gene düzgün
    
    var ipAddress = "192.168.xx.xx";
    var port = 9100;
    
    var client = new System.Net.Sockets.TcpClient();
    client.Connect(ipAddress, port);
    
    var stream = client.GetStream();
    stream.Write(data, 0, data.Length);
    
    //stream.Write ile yazdırdığımda printerda Türkçe karakter sorunlu.
    
                client.Close();
    Çözüm yolu aramaktayım. Yardımcı olabilecek arkadaşlar konu altından yada özel mesaj ile iletişime geçerse çok memnun olurum.

    İyi forumlar dilerim.

    Örnek baskı. UTF8

  • 24-04-2020, 03:32:10
    #2
    Konu günceldir, çözüm arayışım devam ediyor arkadaşlar.
  • 24-04-2020, 10:43:11
    #3
    kodlarini kullanarak basit bir client-server uygulamasi yaptim. Yolladigin utf8 datasi dogru geliyor bana. Ancak karsidaki server'in (senin durumunda printer) ayni sekilde utf8 kullanmasi lazim. Eger farkli bir encoding kullanirsa bu sekilde hata alabilirsin.


    php'de düzgün calistiginizi yazmissin, oradaki encoding nedir, ya da yazicinin dökümasyonundan encoding'ine bakip ayni encoding'i vermen lazim
    mesela iki tarafa da su encoding'i verince yine calisiyor data = Encoding.GetEncoding("ISO-8859-1").GetBytes(msg);
  • 24-04-2020, 21:49:29
    #4
    ertan2002 adlı üyeden alıntı: mesajı görüntüle
    kodlarini kullanarak basit bir client-server uygulamasi yaptim. Yolladigin utf8 datasi dogru geliyor bana. Ancak karsidaki server'in (senin durumunda printer) ayni sekilde utf8 kullanmasi lazim. Eger farkli bir encoding kullanirsa bu sekilde hata alabilirsin.


    php'de düzgün calistiginizi yazmissin, oradaki encoding nedir, ya da yazicinin dökümasyonundan encoding'ine bakip ayni encoding'i vermen lazim
    mesela iki tarafa da su encoding'i verince yine calisiyor data = Encoding.GetEncoding("ISO-8859-1").GetBytes(msg);
    Cevap için çok teşekkür ederim.

    UTF-8 encoding phpde kullanılan.
    Bugün ESC/POS kütüphanesi kullanmaya çalışacağım. ESC/POS komutları ile uyumlu bilgisi var printerda.
    Encoding.GetEncoding("ISO-8859-1") denedim maalesef gene sonuç aynı. Yazıcının firmasını aradık herhangi bir bilgisi yok. Encoding konusunda dökümantasyonda da herhangi bir bilgi yok.
  • 24-04-2020, 21:57:30
    #5
    bir kac popüler encoding'i deneyin o halde.. Ilginc.. php de calisip desktop da calismamasi ilginc. Belki baska kacirdigin nokta var.. Php bilmiyorum ancak kodunu inceleyip bir seyler cikarabilirsin belki. Orda da veri byte array olarak dönüyor, iki byte arrayi karsilastirabilirsin (ayni string icin). Bir de utf32 ile deneyin..
    umarim cözülür
  • 24-04-2020, 22:00:41
    #6
    ertan2002 adlı üyeden alıntı: mesajı görüntüle
    bir kac popüler encoding'i deneyin o halde.. Ilginc.. php de calisip desktop da calismamasi ilginc. Belki baska kacirdigin nokta var.. Php bilmiyorum ancak kodunu inceleyip bir seyler cikarabilirsin belki. Orda da veri byte array olarak dönüyor, iki byte arrayi karsilastirabilirsin (ayni string icin). Bir de utf32 ile deneyin..
    umarim cözülür
    Çok sağolun. Tüm encodingleri tek tek denedim inanın UTF 32 deneyeceğim şimdi.
    Ben de çok ilginç buluyorum durumu. Microsoft'un sürprizleri işte