Durum: Kaynak dosyalardaki bozuk karakterler düzeltilerek API ve arayüz yeniden doğrulandı. Gizlilik: Müşteri, cihaz ve adresler anonimleştirilmiştir; komutlar örnek ortam için uyarlanmalıdır.
Classic ASP’de Türkçe metnin `Ã`, `Â` ya da `—` gibi görünmesi genellikle sadece `Response.Charset` satırını eklemekle çözülmez; kaynak dosyanın gerçek bayt kodlamasına da bakmak gerekir.
Belirti ve neden
Bir Classic ASP sayfası ve ilişkili API çıktısında Türkçe kelimeler bozulmuştu. Bir bölümde bozuk UTF-8 metin doğrudan kaynak dosyada bulunuyordu. Önce bunun veri tabanından mı, ASP dosyasından mı, HTTP charset bilgisinden mi geldiği ayrıştırıldı.
Özellikle veriler daha önce yanlış yorumlanarak kaydedilmişse yeniden UTF-8 başlığı göndermek hasarlı metni geri getirmez.
Sıralı çözüm
- Tarayıcı geliştirici araçlarıyla Response Content-Type ve charset alanını incele.
- ASP dosyasını bir kod düzenleyicide gerçek UTF-8 olarak aç; bozuk dizileri kaynakta ara.
- Sayfa düzeyinde CodePage ve Response.Charset ayarını tutarlı hale getir.
- HTML’de UTF-8 meta etiketini kontrol et; API’nin JSON yanıtını ayrıca sınayarak karakterlerin yalnızca ekranda değil veri kaynağında da düzgün olduğunu doğrula.
- SQL Server kullanılıyorsa NVARCHAR alanları, Unicode parametreler ve ADO veri tiplerini gözden geçir.
Classic ASP sayfa başı örneği
Dikkat: Bu kod, dosyanın içeriği düzgün UTF-8 değilse hatayı tek başına gidermez. XML/JSON uç noktalarında ContentType uygun şekilde ayrıca ayarlanmalıdır.
<%@ Language="VBScript" CodePage="65001" %>
<%
Response.CodePage = 65001
Response.Charset = "UTF-8"
Response.ContentType = "text/html"
%>
<!doctype html>
<html lang="tr"><head><meta charset="utf-8"></head><body>
<p>Çalışma, öğrenci, İstanbul, değişiklik.</p>
</body></html>Veri kontrolü
Kaynak metinde `ç`, `ü`, `Â` veya Unicode replacement character `�` bulunması çift kodlama/bayt kaybı işareti olabilir. Rastgele tüm karakterleri otomatik değiştirmektense gerçek metnin güvenilir kaynağından düzeltmek gerekir.
SELECT TOP (10) [Aciklama] FROM dbo.OrnekTablo;
-- Unicode sabit yazılacaksa N öneki:
SELECT N'İstanbul, çözüm, ğüşöçı';Doğrulanan sonuç
Sahadaki uygulamada hasarlı ASP dosyaları temiz UTF-8 olarak yeniden yazıldı, bozuk diziler temizlendi ve uç noktaların veri yanıtları kontrol edildi. Bir önceki geçici yaklaşımda uzun çizgi yerine kısa tire kullanmak görüntüyü düzeltmişti, ancak kalıcı çözüm kaynak ve HTTP kodlamasının tutarlı olmasıydı.