Dlaczego emoji takie jak 💩 pojawiają się, gdy korzystam z Safari, ale nie Chrome na tym samym MacBooku z Lionem? Obie przeglądarki używają WebKit i wyobrażam sobie, że obsługa czcionek pochodzi z systemu operacyjnego, a nie aplikacji.
Dla celów odniesienia jest to strona renderowana w Chrome 17.0.963.56:
A to jest strona renderowana w Safari 5.1.3 (7534.53.10):
lion
safari
google-chrome
emoji
Daniel
źródło
źródło
Odpowiedzi:
Różnica polega na silnikach renderujących dla okien przeglądarki.
Wiemy, że Safari renderuje zestaw znaków inaczej niż Chrome. Ale elementy interfejsu Windows (zakładki w Chrome) są w porządku. To nasza największa wskazówka.
Prawdopodobnie wszystkie elementy interfejsu użytkownika okna (nacisk na prawdopodobne, tutaj może się nie zgadzam) są renderowane przez system operacyjny. Dzięki temu otrzymują pełną ekspansję emoji na poziomie systemu operacyjnego.
Ale wszystko, co dzieje się w oknie przeglądarki, zależy od przeglądarki. Silniki renderujące stanowią dużą część tajnego sosu każdej przeglądarki.
Zarówno Safari, jak i Chrome używają WebKit, ale podobieństwa między instancjami WebKit, których używają, zatrzymują się gdzieś w pobliżu nazwy silnika. Obaj są rozwidleniami z głównej wersji i oba są mocno dostosowane, aby poprawić wydajność w sposób, który zdaniem każdego zespołu programistów przeglądarki ma znaczenie dla ich użytkowników końcowych.
@JasonSalaz znalazł świetny błąd w bazie danych błędów Chrome, który daje nam ostateczną wskazówkę, że sprowadza się to do rozwidleń WebKit: http://code.google.com/p/chromium/issues/detail?id=90177 - ten błąd jest mówiąc o różnicach między rozwidleniem w Chrome a główną linią WebKit z projektu open source. Istnieją różnice w renderowaniu w głównej linii, które nie zostały jeszcze wprowadzone do wersji używanej przez Chrome. I wygląda na to, że zamierzają połączyć zmiany w pewnym momencie.
Aktualizacja: Paul Irish ma świetny post na blogu o tym, czym różni się WebKit dla wszystkich przeglądarek, które go obecnie używają . Jeśli naprawdę chcesz zrozumieć, jak różnorodne jest środowisko WebKit, jest to świetna lektura.
źródło
Możesz użyć rozszerzenia Chrome Chromoji . Jest to obejście, które zastąpi emoji osadzonymi obrazami na stronach internetowych.
źródło
Problem polega na tym, że Twoja przeglądarka używa innego kodowania znaków niż kod dokumentu, który przeglądasz.
Skąd więc przeglądarka wie, jakiego kodowania znaków użyć?
Content-Type
nagłówka.meta
elementu.charset
atrybutu.Jeśli nie określono żadnego z nich, różne przeglądarki używają różnych technik do odgadnięcia właściwego kodowania znaków. Niektórzy używają heurystyki. Niektóre pozwalają użytkownikowi określić kodowanie znaków. Niektóre wybierają domyślne kodowanie znaków w systemie operacyjnym.
Jeśli żadna z nich się nie pojawi, otrzymasz bełkot, znany również jako mojibake.
Aby odpowiedzieć bezpośrednio na twoje pytanie: Safari i Chrome próbują różnych rzeczy, aby znaleźć właściwe kodowanie znaków.
źródło
Przejdź do paska menu Chrome, kliknij „Więcej narzędzi” → „Kodowanie” i wybierz nowy format kodowania. Używam „Unicode UTF-8”, wydaje mi się, że działa.
źródło
https://code.google.com/p/chromium/issues/detail?id=62435 został ostatnio oznaczony jako naprawiony; od wersji 41 emoji powinno wyświetlać się poprawnie w Chrome.
źródło
Symbol jest postacią stworzoną przez Apple. Safari używa własnego zestawu znaków.
źródło