2015-08-22 18 views
5

Ben standart olmayan görünüyor ama kullanmak availiable bir karakter kullanılarak kasıtlı hata yapmak düzenli Karakterler olarak görülüyor:Görünüşe olmayan bazı standart Karakterler

var ᛨ={}; 
ᛨ.causeError() 

Uncaught TypeError: è.causeError is not a function 

Görünüşe ᛨ karakter è karakterinin bir sürümüdür

(% ෴ olmayan metin ☎, ®)

karşı (uTF-8 a, b, c, metin karakteri bir normal metin olduğu) Ben korelasyon görmüyorum http://unicode-table.com/en/16E8/

Encoding  hex   dec (bytes)  dec   binary 
UTF-8   E1 9B A8  225 155 168  14785448  11100001 10011011 10101000 
UTF-16BE  16 E8   22 232   5864   00010110 11101000 
UTF-16LE  E8 16   232 22   59414   11101000 00010110 
UTF-32BE  00 00 16 E8 0 0 22 232  5864   00000000 00000000 00010110 11101000 
UTF-32LE  E8 16 00 00 232 22 0 0  3893755904  11101000 00010110 00000000 00000000 

è === http://unicode-table.com/en/00E8/

Encoding  hex    dec (bytes) dec   binary 
UTF-8   C3 A8   195 168  50088   11000011 10101000 
UTF-16BE  00 E8   0 232   232   00000000 11101000 
UTF-16LE  E8 00   232 0   59392   11101000 00000000 
UTF-32BE  00 00 00 E8  0 0 0 232  232   00000000 00000000 00000000 11101000 
UTF-32LE  E8 00 00 00  232 0 0 0  3892314112  11101000 00000000 00000000 00000000 

ᛨ ===!

Standart olmayan karakterleri, normal metin karakterleriyle bir ilişki olup olmadığını görmek için nasıl sınayabilirim?

Aradığım ilişki nedir?

İlgi dışı; Bu Unicode sorunu herhangi bir yerde belgelenmiş mi?

[Bu soru, daha ileri düşüncelerin ardından, tamamen (yorumlar) çözülmüş değil]

+0

Gerçekten önemi olan bir durum göremiyorum, ama bu oldukça ilginç bir konu :) –

+0

Evet, çok ilginç olduğunu düşünüyorum! –

+2

Ayrıca, sadece kontrol ettim. Hala "è" ve "è" adında bir mülk verebilirsiniz. Hata için konsol çıktısı ile sadece bir sorun gibi görünüyor. –

cevap

1

ಠ_ಠ adlı bir değişkenle test edildi, hata mesajı "_" (boşluk alt alanı) içeriyor. Hata mesajları yazan kodun gerektiği kadar karakter desteklemediği anlaşılıyor.

Konsolda aynı sorunla karşılaşır, bu nedenle bir dosya kodlama sorunu değildir. Artı karakterler otomatik hata mesajlarında herhangi bir sorun olmadan yönetilir. throw new Error("ಠ_ಠ"); yazımı bile sorunsuz bir şekilde çalışır.

Bu oldukça belirgin bir hata gibi görünüyor, ancak hem Chrome hem de Firefox'u etkiler.

+0

Aferin, bu oldukça eğlenceliydi! –

+0

Özgün sorumun boş ve geçersiz (ilginç olsa da) olduğunu söyleyebilirim –

+0

Başka biri daha içgörüye sahipse, konuğum ol! –

1

è 'tesadüfen' da UTF-ikinci bayt olan batı ANSI kodlamaları karakter E8 olduğu Özel karakteriniz için 16 kod noktası (ve bu arada UTF-16'da da è).

Kaynak bir dosyadan çalışıyorsanız: Dosyayı yanlış kodlamaya, belki de ANSI'ye, muhtemelen UTF-16'ya kaydetmiş olabilirsiniz. Kaynak dosyanızın doğru kodlamaya kaydedildiğinden emin olun. Dosyanızla gönderdiğiniz İçerik Kodlama başlıklarıyla eşleştiği ve içerisine koymak istediğiniz her karakteri içerebildiği sürece 'doğru' kodlama hemen hemen her şey olabilir (UTF-8 önerilir).

Konsoldan çalışıyorsanız: Bu yalnızca bir konsol bozuluyorsa, bu hala sorunu açıklar. Dahili olarak, tarayıcı muhtemelen UTF-8'den farklı bir kodlama kullanacaktır, çünkü UTF-8 iletim için etkilidir, ancak birlikte çalışmak için uygun değildir. Büyük olasılıkla UTF-16 (veya UCS2) kullanır. Karakteriniz daha sonra çift baytlık kod noktası 16 E8 olarak kodlanacaktır. Konsol, her baytı ayrı karakterler olarak göstermeye çalışırsa, olarak E8 gösterecek ve 16 dizisini atlayacaktır, çünkü tarihsel olarak bir ASCII denetim karakteri (Senkronizasyon için SYN, Synchronous Idle için) ve görüntü için tasarlanmamıştır.

+0

Dosya yok, sadece normal bir Chrome tarayıcısında konsolla oynuyorum. Bence cevaba yakın olsak da (+1). Belki de asıl soru, UTF-16'nın ikinci baytına (ve tamam) giden bir atlama nedenidir? –

+1

Son paragrafa bakın. Konsol, muhtemelen sembolü iki (ANSI) karakter olarak görüntüler, ancak birincisi, 16, tarihsel olarak bir kontrol karakteridir ve konsol tarafından görüntülenemez. – GolezTrol

+0

Ayrıca doğru +1 –

İlgili konular