Türkçe Karakterlerin Ascii Kodları Sorunu
-
Örneğin, Ş nin ascii kodu 158.
C de,
printf("%c", 158);
Yazdığımda Ş olarak ekrana çıkıyor.
Fakat bir txt içinde ki Ş yi, bir int değişkenine atıp okuduğumda,
Ve yazdırdığımda Farklı bir karakter çıkıyor.
Karakterin kodu ise -34 gözüküyor.
Bunun sebebi ne ?
Bana göre Ş nin ascii kodu int değişkeninde tutulacak sonrada yazılacaktı.
-
Ascii table da Ş olduğunu hatırlamıyorum
-
karakteri nasıl direk int e atıyorsun? ekrana yazdırdığın da muhtemelen farklı bir değer alırsın..
bunun yerine okuduğun karakter char tipinde olduğu için bunu byte a kest ederek ascii kodunu alabilrisin ondan sonra da onun değerini int e eşitleyebilirsin, bu şekilde yaparsan dediğin ascii kodu elde edersin
-
unbalanced bunu yazdı
karakteri nasıl direk int e atıyorsun? ekrana yazdırdığın da muhtemelen farklı bir değer alırsın..
bunun yerine okuduğun karakter char tipinde olduğu için bunu byte a kest ederek ascii kodunu alabilrisin ondan sonra da onun değerini int e eşitleyebilirsin, bu şekilde yaparsan dediğin ascii kodu elde edersin
C o açıdan esnek değil mi ki ?
Her karakterin asci karşılığı karakterin görüntü değerine eşit diye biliyorum. Tekrar Denedim A yazdım txt ye 65 olarak aldı.
C de cast olarak byte var mı bilemiyorum. Otomatik tamamlamada yok :) Yazdım hata verdi.
-
C kullanmıyorum hocam pek, şimdi yeni yeni obj. C ye geçtim
ama dosya okurken o gelen verinin türü nasıl C de bilmiyorum ama Char tipinde okutman gerek eğer direk int tipi olarak okutursan ascii vereceğini sanmıyorum ama A için 65 i alabiliyorsan tr karakteriyle ilgili sıkıntı olmuş olabilir, C de onla ilgili bi sıkıntı var zaten
-
txt den okudugun char i direk ekrana yansittiginda sorun oldu mu
-
unbalanced bunu yazdı
karakteri nasıl direk int e atıyorsun? ekrana yazdırdığın da muhtemelen farklı bir değer alırsın..
bunun yerine okuduğun karakter char tipinde olduğu için bunu byte a kest ederek ascii kodunu alabilrisin ondan sonra da onun değerini int e eşitleyebilirsin, bu şekilde yaparsan dediğin ascii kodu elde edersin
char türden bi veriyi direk atabilir zaten int türden bir değişkene.Hatırladığım kadarı ile zaten arka planda hepsi int üzerinden dönüyo olması lazım.
Dosyadan okuma yaparken demekki karakter olarak alamıyor Ş yi.Dosyalama işlemleri konusunu da iyi bilmiyorum.Aynı işlemin tersini konsolda dene istersen hocam.
-
Hocam turkish character set içinden lookup yapman lazım doğrusunu almak için
unsigned char turkish_set[256]= { 0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16, 17, 18, 19, 20, 21, 22, 23, 24, 25, 26, 27, 28, 29, 30, 31, 32, 33, 34, 35, 36, 37, 38, 39, 40, 41, 42, 43, 44, 45, 46, 47, 246,247,248,249, 250,251,252,253,254,255, 48, 49, 50, 51, 52, 53, 54, 55, 57, 59, 63, 65, 67, 69, 73, 75, 79, 81, 83, 85, 87, 89, 93, 95, 97, 99,103,105,109,111,113,115, 117,119,120,121,122,123, 124, 56, 58, 60, 64, 66, 68, 70, 74, 78, 80, 82, 84, 86, 88, 90, 94, 96, 98,100,104,106,110,112,114,116,118,125,126,127, 128,129, 130,131,132,133,134,135,136,137,138,139,140,141,142,143,144,145, 146,147,148,149,150,151,152,153,154,155,156,157,158,159,160,161, 162, 163,164,165,166,167,168,169,170,171,172,173,174,175,176,177, 178,179, 180,181,182,183,184,185,186,187,188,189,190,191,192,193, 194,195,196, 197,198,199,200, 61,201,202,203,204,205,206,207,208, 71,209,210,211,212, 213, 91,214,215,216,217,218,107, 77,101,219, 220,221,222,223,224,225,226, 62,227,228,229,230,231,232,233,234, 72,235,236,237,238,239, 92, 240,241,242,243,244,108, 76,102,245 };
Buradan char turkish_set[i] şeklinde lookup yapıp bastır
-
Ascii tablosunun 127'den sonraki kısmı standart değil. Bende Ş karakteri 158 olabilir de olmayabilir de. Hatta kullandığım iki fonttan birinde 158 Ş olur, diğerinde Ğ olur. Bunu bilemeyiz.
Sonuç olarak: Unicode'a geçin.