Duyuruyu Kapat
Facebook Gözat
Twitter Gözat

C# ASCII ve UNICODE

Konu, 'C#' kısmında ali guner tarafından paylaşıldı.

  1. ali guner

    ali guner Üye

    Kayıt:
    1 Şubat 2017
    Mesajlar:
    189
    Beğenilen Mesajlar:
    31
    Şehir:
    istanbul
    Merhabalar, iyi geceler dostlar,
    1) C# da kullanılan ASCII 7 bit sanırım bunu unicode UTF-8 olarak değil de ASCII 8 bit biçiminde kullanmak için bir converter fonksiyonu var mıdır ?
    Sanırım (bildiğim kadarıyla) sadece 7 bit converter fonksiyonu mevcut...
    2) Biliyoruz ki hem ASCII hem de Unicode tarafında basılamayan kontrol karakterleri mevcut. Bu kontrol karakterleri klavye girdisi gibi, misal backspace gibi karakterleri barındırıyor.
    Bunlar misal bir textbox'a yazılırken (aktarılırken) örneğin bir backspace karakteri ile karşılaştığında
    merha (backspace) ba
    şu şekilde mi yazılmaktadır;
    merhba
    Tam olarak bu kontrol karakterlerinin kayıt edilmesinin yararı ve amacı nedir ?
    Bu kontrol karakterleri ile karşılaşıldığında okuyan process in verdiği tepki ne olur ?
    Sağolun varolun...
    Hürmetlerimi arz ederim.
     
    Son düzenleme: 2 Şubat 2017
  2. skacurt

    skacurt Â

    Kayıt:
    4 Ocak 2008
    Mesajlar:
    4,338
    Beğenilen Mesajlar:
    19
    Meslek:
    Küfeci
    Şehir:
    İstanbul
    O karakterlerin görünmemesi, kodlama veya karakter kümesi ile alakalı değil, öyle tasarlanmalarından dolayıdır.
    Zaten o yüzden bunlara kontrol karakterleri deniyor. Diğer yandan UTF-8 adıyla müsemma 8-bit olan genişletilmiş ASCII ile uyumludur.

    Kontrol karakterlerinin ne olacağı ise ortam belirliyor. Bir metin kutusuna "merha(backspace)ba" yazıldığında olan şey şu:

    İmleç 1. pozisyondadır.
    m, e, r, h, a yazıldıktan sonra imleç 6. pozisyonda hazır beklemektedir.
    (backspace) geldiğinde bir önceki 5. pozisyonu silip oraya yerleşecek,
    b ve a 'nın da gelmesinin ardından pozisyon 2 sıra atlayıp 7 olacak
    metin kutusunda "merhba" yazmaktadır.

    Sorunun son kısmını genişletirsen daha ayrıntılı yanıt verilebilir.
     
  3. ali guner

    ali guner Üye

    Kayıt:
    1 Şubat 2017
    Mesajlar:
    189
    Beğenilen Mesajlar:
    31
    Şehir:
    istanbul
    Yani UTF-8 ile ASCII nin kontrol karakterleri birebir aynı mıdır ? Aynı sıradalar mı ?
    Sorum şu idi, okuyan process aynen textbox'a metin yazan bir kişi gibi bunu textbox'a girdiğinde (aktardığında) textbox da bu girdi klavyeden geliyormuş gibi mi davranıyor?

    Ki dediğinize göre öyle o vakit. Sanki kullanıcı backspace tuşuna basmış gibi yorumluyor öyleyse. İster kullanıcıdan gelsin, ister kayıtlı bir dosyadan sistem getirsin, tepkisi aynı oluyor galiba.

    Hürmetler...
     
    Son düzenleme: 2 Şubat 2017
  4. skacurt

    skacurt Â

    Kayıt:
    4 Ocak 2008
    Mesajlar:
    4,338
    Beğenilen Mesajlar:
    19
    Meslek:
    Küfeci
    Şehir:
    İstanbul
    Evet kontrol karakterleri birebir aynılar.

    Klavyeden bir tuşa bastığında kaba taslak olanlar ise şöyle.

    İşletim sistemi donanım sürücüsü aracılığıyla klavye cihazını dinlemektedir.
    Bir tuşa bastığınızda klavye cihazı kendi sürücüsüne bunu bildirir ve işletim sistemi hangi tuşa basıldığı bilgisine sahip olur.
    Bundan sonrası "ortama göre değişken" demiştim oraya doğru gidiyor.
    Bir Windows masaüstü ortamında Windows aktif uygulama penceresine basılan bu tuşla ilgili bir mesaj gönderiyor. Bu mesaj uygulama penceresi tarafından yorumlanıyor.
    Gelen mesaj ALT+F4 olduğunda uygulamanın sonlanması veya mesajın BACKSPACE olması halinde aktif kontrol bir metin kutusuysa imlecin silerek bir adım geri gitmesi tamamen nasıl programlandığıyla alakalı.

    Örneğin siz, BACKSPACE mesajı geldiğinde silmek yerine A harfi yazıldığını varsayan bir metin kutusu kontrolünü pekala yazabilirsiniz.
     
  5. ali guner

    ali guner Üye

    Kayıt:
    1 Şubat 2017
    Mesajlar:
    189
    Beğenilen Mesajlar:
    31
    Şehir:
    istanbul
    Ama bir textbox a metin yazarken kullanıcı ne kadar backspace ile yazdığını silerse silsin, textbox içerisinde olan metinde kontrol karakteri bulunmuyor değil mi ? (Yani bulunmaması gerekiyor sonuçta, sanırım filtreleniyor) En nihayetinde basılabilir karakterler tutuluyor sadece. Backspace komutu sadece bir karakter siliyor ve sildiği karakter gibi kendisi de siliniyor ve textbox metini içerisinde tutulmuyor sanırım.

    Yani
    merhaba
    (backspace)(backspace)(backspace)(backspace)(backspace)(backspace)(backspace)
    Ali Merhaba
    yazarsa kullanıcı
    bunu ilk yazılan "merhaba" + 7 kez backspace kontrol komutu ile birlikte + "Ali Merhaba" şeklinde kayıt etmiyor / göndermiyor programa sanırım.

    Textbox dan sorumlu yordam bu kontrol karakterlerini filtreliyor galiba... Yani textbox da kalan sadece 11 karakter olan "Ali Merhaba" karakter katarı, daha önce yazıp sildiği ve tekrar yazdığı ve böylece toplamda 25 karakter katarını bulan metin değil, doğru mu ?...

    Hürmetlerimi arz ederim.
     
    Son düzenleme: 2 Şubat 2017