Özet - Unicode
- C kursu
- İleri seviye
- Ders 66/83
- 5 dk
UTF-8 ve wchar_t'yi birleştirerek bir çok dilli merhaba uygulaması yazarsın.
Özet - Unicode
Bu grupta ASCII ve UTF-8 farkını, wchar_t'yi, setlocale'i, mbstowcs'i ve UTF-8 kod çözücüyü öğrendin. Şimdi tümünü birleştirerek bir çok dilli merhaba uygulaması yazacaksın.
Program: bir ASCII dizeyi yazdırır, yereli "C" olarak kurar, strlen ile bayt sayısını ve mbstowcs ile geniş karakter sayısını hesaplar, üçünü birden yazdırır. Tüm çıktılar deterministiktir: "Merhaba" için bayt 7, geniş karakter 7.
Uygulama Çok dilli merhaba
const char *s = "Merhaba"; tanımla. printf("%s\n", s); ile yazdır. setlocale(LC_ALL, "C"); çağır. size_t mb = strlen(s); ve size_t wcs = mbstowcs(NULL, s, 0); hesapla. printf("bayt: %zu\n", mb); ve printf("wcs: %zu\n", wcs);.
Başlangıç kodu
#include <stdio.h>
#include <stdlib.h>
#include <string.h>
#include <locale.h>
// "Merhaba" yazdır, yereli 'C' olarak kur
// strlen ile bayt, mbstowcs ile geniş karakter sayısını yazdır
int main(void) {
return 0;
}Örnek çözüm
#include <stdio.h>
#include <stdlib.h>
#include <string.h>
#include <locale.h>
int main(void) {
const char *s = "Merhaba";
printf("%s\n", s);
setlocale(LC_ALL, "C");
size_t mb = strlen(s);
size_t wcs = mbstowcs(NULL, s, 0);
printf("bayt: %zu\n", mb);
printf("wcs: %zu\n", wcs);
return 0;
}Beklenen çıktı
Merhaba bayt: 7 wcs: 7
Sonraki adımlar
Unicode ve çoklu dil temelini öğrendin. ASCII tek bayt, UTF-8 değişken, wchar_t geniş karakter saklar. setlocale ile yerel ayar kurarsın; mbstowcs ve wcstombs ile iki yönlü dönüşüm yaparsın.
İleri adımlar: mbrtowc ile yeniden başlatılabilir dönüşüm, ICU kütüphanesi ile tam Unicode desteği ve char32_t ile sabit genişlikte kod noktası depolama. UTF-8 kod çözücünü üç ve dört baytlı dizilere genişletebilirsin.
Soru ve cevaplar
Dersin sorularını cevaplarıyla birlikte inceleyebilirsin. Kendini denemek istersen dersi interaktif olarak çöz.
1 Çok baytlı dönüşüm öncesi hangi işlev çağrılmalı?
- printf
- setlocale Doğru cevap
- strlen
- malloc
Açıklama: setlocale olmadan mbstowcs davranışı tanımsızdır.
2 İşlevleri amacına eşle
| Kavram | Anlamı |
|---|---|
strlen |
Bayt sayar |
mbstowcs |
Geniş dize verir |
setlocale |
Yerel kurar |
decode_utf8 |
Kod noktası |