Mojibake: Difference between revisions
Removing link(s) to deleted page Code page 852 |
|||
(623 intermediate revisions by more than 100 users not shown) | |||
Line 1: | Line 1: | ||
{{Short description|Garbled text as a result of incorrect character encodings}} |
|||
{{multiple issues| |
|||
{{ |
{{More citations needed|date=March 2023}} |
||
[[File:Mojibakevector.png|thumb|300px|The [[UTF-8]]-encoded [[:ja:文字化け|Japanese Wikipedia article for ''Mojibake'']] displayed as if interpreted as [[Windows-1252]]]] |
|||
{{refimprove|date=May 2009}} |
|||
[[File:Mojibakevector2.png|thumb|300px|The [[UTF-8]]-encoded [[:ru:Церковнославянский язык|Russian Wikipedia article on Church Slavonic]] displayed as if interpreted as [[KOI8-R]]]] |
|||
}} |
|||
{{special characters}} |
{{special characters}} |
||
'''Mojibake''' ({{langx|ja|文字化け}}; {{IPA|ja|mod͡ʑibake|IPA}}, 'character transformation') is the garbled or gibberish text that is the result of text being decoded using an unintended [[character encoding]].<ref name="ieee">{{Cite journal |doi = 10.1109/MSPEC.2012.6221090|title = Will unicode soon be the universal code? [The Data]|journal = IEEE Spectrum|volume = 49|issue = 7|pages = 60|year = 2012|last1 = King|first1 = Ritchie}}</ref> The result is a systematic replacement of symbols with completely unrelated ones, often from a different [[writing system]]. |
|||
[[File:Mojibakevector.png|thumb|400px|The [[UTF-8]]-encoded [[:ja:文字化け|Japanese Wikipedia article for ''mojibake'']], as displayed in the [[Windows-1252]] encoding.]] |
|||
This display may include the generic [[Specials (Unicode block)#Replacement character|replacement character]] {{gpm|�}} in places where the [[binary code|binary]] representation is considered invalid. A replacement can also involve multiple consecutive symbols, as viewed in one encoding, when the same binary code constitutes one symbol in the other encoding. This is either because of differing constant length encoding (as in Asian 16-bit encodings vs European 8-bit encodings), or the use of variable length encodings (notably [[UTF-8]] and [[UTF-16]]). |
|||
{{nihongo|'''Mojibake'''|文字化け|}} ({{IPA-ja|mod͡ʑibake|IPA}}; lit. "character transformation"), from the [[Japanese (language)|Japanese]] 文字 (moji) "character" + 化け (bake) "transform", is the presentation of incorrect, unreadable characters when [[software]] fails to render text correctly according to its associated [[character encoding]]. |
|||
Failed rendering of glyphs due to either missing fonts or missing glyphs in a font is a different issue that is not to be confused with mojibake. Symptoms of this failed rendering include blocks with the [[code point]] displayed in [[hexadecimal]] or using the generic replacement character. Importantly, these replacements are ''valid'' and are the result of correct error handling by the software. |
|||
==Causes== |
==Causes== |
||
To correctly reproduce the original text that was encoded, the correspondence between the encoded data and the notion of its encoding must be preserved (i.e. the source and target encoding standards must be the same). As mojibake is the instance of non-compliance between these, it can be achieved by manipulating the data itself, or just relabelling it. |
|||
''Mojibake'' is often caused when a [[character encoding]] is not correctly tagged in a document, or when a document is moved to a system with a different default encoding. Such incorrect display occurs when [[writing system]]s or [[character encoding]]s are mistagged or "foreign" to the user's computer system; if a computer does not have the software required to process a foreign language's characters, it will attempt to process them in its default language encoding, usually resulting in [[gibberish]]. Transferring messages between different encodings of the same language can also result in mojibake. Japanese language users, with several different encodings historically employed, encounter this problem relatively often. For example, the intended word "文字化け", encoded in [[UTF-8]], is incorrectly displayed as "æ–‡å—化ã‘" in software that is configured to expect text in the [[Windows-1252]] or [[ISO-8859-1]] encodings, usually labelled Western. |
|||
Mojibake is often seen with text data that have been tagged with a wrong encoding; it may not even be tagged at all, but moved between computers with different default encodings. A major source of trouble are [[communication protocol]]s that rely on settings on each computer rather than sending or storing [[metadata]] together with the data. |
|||
A [[web browser]] may not be able to distinguish a page coded in [[EUC-JP]] and another in [[Shift-JIS]] if the coding scheme is not assigned explicitly using [[HTTP headers]] sent along with the documents, or using the [[HTML]] document's [[meta tag]]s that are used to substitute for missing HTTP headers if the server cannot be configured to send the proper HTTP headers; see [[character encodings in HTML]]. Heuristics can be applied to guess at the character set, but these are not always successful. |
|||
The differing default settings between computers are in part due to differing deployments of [[Unicode]] among [[operating system]] families, and partly the legacy encodings' specializations for different [[writing system]]s of human languages. Whereas [[Linux distribution]]s mostly switched to [[UTF-8]] in 2004,<ref>{{cite web |last1=WINDISCHMANN |first1=Stephan |title=curl -v linux.ars (Internationalization) |url=https://arstechnica.com/information-technology/2004/03/linux-20040331/ |website=Ars Technica |access-date=5 October 2018 |language=en-us |date=31 March 2004}}</ref> [[Microsoft Windows]] generally uses UTF-16, and sometimes uses 8-bit code pages for text files in different languages. |
|||
Mojibake can also occur between what appears to be the same encodings. For example, some software by [[Microsoft]] and [[Eudora (e-mail client)|Eudora]] for [[Microsoft Windows|Windows]] purportedly encoded their output using the [[ISO-8859-1]] encoding while, in reality, using [[Windows-1252]] that contains extra printable characters in the [[C0 and C1 control codes#C1|C1]] range. These characters were not displayed properly in software complying with the ISO standard; this especially affected software running under other operating systems (e.g. [[Unix]]). |
|||
For some [[writing system]]s, such as [[Japanese script|Japanese]], several encodings have historically been employed, causing users to see mojibake relatively often. As an example, the word ''mojibake'' itself ("文字化け") stored as [[EUC-JP]] might be incorrectly displayed as {{not a typo|"ハクサ�ス、ア"}}, "ハクサ嵂ス、ア" ([[Windows-31J|MS-932]]), or "ハクサ郾ス、ア" if interpreted as Shift-JIS, or as "ʸ»ú²½¤±" in software that assumes text to be in the [[Windows-1252]] or [[ISO 8859-1|ISO 8859-1]] encodings, usually labelled ''Western'' or ''Western European''. This is further exacerbated if other locales are involved: the same text stored as [[UTF-8]] appears as {{not a typo|"譁�蟄怜喧縺�"}} if interpreted as Shift-JIS, as "文字化ã‘" if interpreted as Western, or (for example) as "鏂囧瓧鍖栥亼" if interpreted as being in a [[GBK (character encoding)|GBK]] (Mainland China) locale. |
|||
==Resolutions== |
|||
{| class="wikitable" style="text-align: center; margin: auto;" |
|||
Applications using [[UTF-8]] as a default encoding may achieve a greater degree of interoperability due to its widespread use and backward compatibility with [[US-ASCII]]. |
|||
|+ Mojibake example |
|||
! Original text |
|||
| colspan="6"|文 |
|||
| colspan="6"|字 |
|||
| colspan="6"|化 |
|||
| colspan="6"|け |
|||
|- |
|||
! Raw bytes of EUC-JP encoding |
|||
| colspan="3" | CA || colspan="3" | B8 || colspan="3" | BB || colspan="3" | FA || colspan="3" | B2 || colspan="3" | BD || colspan="3" | A4 || colspan="3" | B1 |
|||
|- |
|||
! EUC-JP bytes interpreted as Shift-JIS |
|||
| colspan="3" | ハ || colspan="3" | ク || colspan="3" | サ || colspan="6" | 郾 || colspan="3" | ス || colspan="3" | 、 || colspan="3" | ア |
|||
|- |
|||
! EUC-JP bytes interpreted as GBK |
|||
| colspan="6" | 矢 || colspan="6" | 机 || colspan="6" | 步 || colspan="6" | け |
|||
|- |
|||
! EUC-JP bytes interpreted as Windows-1252 |
|||
| colspan="3" | Ê || colspan="3" | ¸ || colspan="3" | » || colspan="3" | ú || colspan="3" | ² || colspan="3" | ½ || colspan="3" | ¤ || colspan="3" | ± |
|||
|- |
|||
! Raw bytes of UTF-8 encoding |
|||
| colspan="2" | E6 || colspan="2" | 96 || colspan="2" | 87 || colspan="2" | E5 || colspan="2" | AD || colspan="2" | 97 || colspan="2" | E5 || colspan="2" | 8C || colspan="2" | 96 || colspan="2" | E3 || colspan="2" | 81 || colspan="2" | 91 |
|||
|- |
|||
! UTF-8 bytes interpreted as Shift-JIS |
|||
| colspan="4" | 譁 || colspan="2" | {{not a typo|�}} || colspan="4" | 蟄 || colspan="4" | 怜 || colspan="4" | 喧 || colspan="4" | 縺 || colspan="2" | {{not a typo|�}} |
|||
|- |
|||
! UTF-8 bytes interpreted as GBK |
|||
| colspan="4" | 鏂 || colspan="4" | 囧 || colspan="4" | 瓧 || colspan="4" | 鍖 || colspan="4" | 栥 || colspan="4" | 亼 |
|||
|- |
|||
! UTF-8 bytes interpreted as Windows-1252 |
|||
| colspan="2" | æ || colspan="2" | – || colspan="2" | ‡ || colspan="2" | å || colspan="2" title="U+00AD: SOFT HYPHEN (alias SHY)" style="font-size:75%;padding:0pt" | {{border|SHY|style=dashed|color=black}} || colspan="2" | — || colspan="2" | å || colspan="2" | Œ || colspan="2" | – || colspan="2" | ã || colspan="2" title="U+0081: Control (alias HIGH OCTET PRESET) (alias HOP)" style="font-size:75%;padding:0pt" | {{border|HOP|style=dashed|color=black}} || colspan="2" | ‘ |
|||
|} |
|||
===Underspecification=== |
|||
The difficulty of resolving an instance of mojibake varies depending on the application within which it occurs and the causes of it. Two of the most common applications in which mojibake may occur are [[web browser]]s and [[word processor]]s. Modern browsers and word processors often support a wide array of character encodings. Browsers often allow a user to change their [[Layout engine|rendering engine's]] encoding setting on the fly, while word processors allow the user to select the appropriate encoding when opening a file. It may take some [[trial and error]] for users to find the correct encoding. |
|||
If the encoding is not specified, it is up to the software to decide it by other means. Depending on the type of software, the typical solution is either configuration or [[charset detection]] heuristics, both of which are prone to mis-prediction. |
|||
The encoding of [[text file]]s is affected by [[Locale (computer software)|locale]] setting, which depends on the user's language and brand of [[operating system]], among other conditions. Therefore, the assumed encoding is systematically wrong for files that come from a computer with a different setting, or even from a differently [[software localisation|localized]] piece of software within the same system. For Unicode, one solution is to use a [[byte order mark]], but many [[parser]]s do not tolerate this for [[source code]] or other machine-readable text. Another solution is to store the encoding as metadata in the file system; file systems that support [[extended file attributes]] can store this as <code>user.charset</code>.<ref>{{cite web|title=Guidelines for extended attributes|url=http://www.freedesktop.org/wiki/CommonExtendedAttributes|date=2013-05-17|access-date=2015-02-15}}</ref> This also requires support in software that wants to take advantage of it, but does not disturb other software. |
|||
The problem gets more complicated when it occurs in an application that normally does not support a wide range of character encoding, such as in a non-Unicode computer game. In this case, the user must change the operating system's encoding settings to match that of the game. However, changing the system-wide encoding settings can also cause Mojibake in pre-existing applications. In [[Windows XP]] or later, a user also has the option to use [[Microsoft AppLocale]], an application that allows the changing of per-application locale settings. Even so, changing the operating system encoding settings is not possible on earlier operating systems such as [[Windows 98]]; to resolve this issue on earlier operating systems, a user would have to use third party font rendering applications. |
|||
While some encodings are easy to detect, such as UTF-8, there are many that are hard to distinguish (see [[charset detection]]). For example, a [[web browser]] may not be able to distinguish between a page coded in [[EUC-JP]] and another in [[Shift-JIS]] if the encoding is not assigned explicitly using [[HTTP headers]] sent along with the documents, or using the document's [[meta tag]]s that are used to substitute for missing HTTP headers if the server cannot be configured to send the proper HTTP headers; see [[character encodings in HTML]]. |
|||
==Problems in specific languages== |
|||
===Mis-specification=== |
|||
Mojibake also occurs when the encoding is incorrectly specified. This often happens between encodings that are similar. For example, the [[Eudora (e-mail client)|Eudora]] email client for [[Microsoft Windows|Windows]] was known to send emails labelled as [[ISO 8859-1|ISO 8859-1]] that were in reality [[Windows-1252]].<ref>{{cite web|url=https://www.unicode.org/mail-arch/unicode-ml/y2001-m07/0355.html|title=Unicode mailinglist on the Eudora email client|date=2001-05-13|access-date=2014-11-01}}</ref> Windows-1252 contains extra printable characters in the [[C1 control codes|C1]] range (the most frequently seen being curved [[quotation marks]] and extra [[dash]]es), that were not displayed properly in software complying with the ISO standard; this especially affected software running under other operating systems such as [[Unix]]. |
|||
====User oversight==== |
|||
Of the encodings still in common use, many originated from taking [[ASCII]] and appending atop it; as a result, these encodings are partially compatible with each other. Examples of this include Windows-1252 and ISO 8859-1. People thus may mistake the expanded encoding set they are using with plain ASCII. |
|||
===Overspecification=== |
|||
When there are layers of protocols, each trying to specify the encoding based on different information, the least certain information may be misleading to the recipient. |
|||
For example, consider a [[web server]] serving a static HTML file over HTTP. The character set may be communicated to the client in any number of 3 ways: |
|||
* in the HTTP header. This information can be based on server configuration (for instance, when serving a file off disk) or controlled by the application running on the server (for dynamic websites). |
|||
* in the file, as an [[Meta element|HTML meta tag]] (<code>http-equiv</code> or <code>charset</code>) or the <code>encoding</code> attribute of an [[XML]] declaration. This is the encoding that the author meant to save the particular file in. |
|||
* in the file, as a [[byte order mark]]. This is the encoding that the author's editor actually saved it in. Unless an accidental encoding conversion has happened (by opening it in one encoding and saving it in another), this will be correct. It is, however, only available in [[Unicode]] encodings such as UTF-8 or UTF-16. |
|||
===Lack of hardware or software support=== |
|||
Much older hardware is typically designed to support only one character set and the character set typically cannot be altered. The character table contained within the display firmware will be localized to have characters for the country the device is to be sold in, and typically the table differs from country to country. As such, these systems will potentially display mojibake when loading text generated on a system from a different country. Likewise, many early operating systems do not support multiple encoding formats and thus will end up displaying mojibake if made to display non-standard text—early versions of [[Microsoft Windows]] and [[Palm OS]] for example, are localized on a per-country basis and will only support encoding standards relevant to the country the localized version will be sold in, and will display mojibake if a file containing a text in a different encoding format from the version that the OS is designed to support is opened. |
|||
==Resolutions== |
|||
Applications using [[UTF-8]] as a default encoding may achieve a greater degree of interoperability because of its widespread use and backward compatibility with [[US-ASCII]]. UTF-8 also has the ability to be directly recognised by a simple algorithm, so that well written software should be able to avoid mixing UTF-8 up with other encodings. |
|||
The difficulty of resolving an instance of mojibake varies depending on the application within which it occurs and the causes of it. Two of the most common applications in which mojibake may occur are [[web browser]]s and [[word processor]]s. Modern browsers and word processors often support a wide array of character encodings. Browsers often allow a user to change their [[Browser engine|rendering engine's]] encoding setting on the fly, while word processors allow the user to select the appropriate encoding when opening a file. It may take some [[trial and error]] for users to find the correct encoding. |
|||
The problem gets more complicated when it occurs in an application that normally does not support a wide range of character encoding, such as in a non-Unicode computer game. In this case, the user must change the operating system's encoding settings to match that of the game. However, changing the system-wide encoding settings can also cause Mojibake in pre-existing applications. In [[Windows XP]] or later, a user also has the option to use [[Microsoft AppLocale]], an application that allows the changing of per-application locale settings. Even so, changing the operating system encoding settings is not possible on earlier operating systems such as [[Windows 98]]; to resolve this issue on earlier operating systems, a user would have to use third party font rendering applications. |
|||
==Problems in different writing systems== |
|||
===English=== |
===English=== |
||
Mojibake in English texts generally occurs in punctuation, such as [[em dash]]es (—), [[en dash]]es (–), and [[curly quote]]s (“, ”), but rarely in character text, since most encodings agree with [[ASCII]] on the encoding of the [[English alphabet]]. For example, the pound sign |
Mojibake in English texts generally occurs in punctuation, such as [[em dash]]es (—), [[en dash]]es (–), and [[curly quote]]s (“, ”, ‘, ’), but rarely in character text, since most encodings agree with [[ASCII]] on the encoding of the [[English alphabet]]. For example, the [[pound sign]] <code>£</code> will appear as <code>[[Â#In_encoding_mismatches|£]]</code> if it was encoded by the sender as [[UTF-8]] but interpreted by the recipient as one of the Western European encodings ([[CP1252]] or [[ISO 8859-1|ISO 8859-1]]). If iterated using CP1252, this can lead to <code>£</code>, <code>£</code>, <code>£</code>, <code>£</code>, and so on. |
||
Similarly, the [[right single quotation mark]] (’), when encoded in UTF-8 and decoded using Windows-1252, becomes <code>’</code>, <code>’</code>, <code>’</code>, and so on. |
|||
===Japanese=== |
|||
In [[Japanese language|Japanese]], the phenomenon is, as mentioned, called ''mojibake'' {{lang|ja|文字化け}}. It is often encountered by non-Japanese when attempting to run software written for the Japanese market. |
|||
In older eras, some computers had vendor-specific encodings which caused mismatch also for English text. [[Commodore International|Commodore]] brand [[8-bit]] computers used [[PETSCII]] encoding, particularly notable for inverting the upper and lower case compared to standard [[ASCII]]. PETSCII printers worked fine on other computers of the era, but inverted the case of all letters. IBM [[Mainframe computer|mainframe]]s use the [[EBCDIC]] encoding which does not match ASCII at all. |
|||
===Chinese=== |
|||
In [[Chinese language|Chinese]], the same phenomenon is called 乱码 (Simplified Chinese) / 亂碼 (Traditional Chinese) ({{zh|p=Luàn mǎ}}, meaning chaotic code), and can occur when computerised text is encoded in one [[Chinese character encoding]] but is displayed using the wrong encoding. When this occurs, it is often possible to fix the issue by switching the character encoding without loss of data. The situation is complicated due to the existence of several Chinese character encoding systems in use, the most common ones being: [[Unicode]], [[Big5]], and [[Guobiao code|Guobiao]] (which has several versions), and the possibility of Chinese characters being encoded using Japanese encoding. |
|||
===Other Western European languages=== |
|||
An additional problem is caused when encodings are missing characters, which is common with rare or antiquated characters that are still used in personal or place names. Examples of this are [[Taiwan]]ese politicians [[Wang Chien-shien]] ({{zh|c=王建煊|p=Wáng Jiànxuān}}) and [[Yu Shyi-kun]] ({{zh|t=游錫堃|s=游锡堃|p=Yóu Xíkūn}}), ex-PRC Premier [[Zhu Rongji]] ({{ zh|c=朱镕基|p=Zhū Róngjī}}) and Taiwanese singer [[David Tao]] ({{zh|t=陶喆|p=Táo Zhé}}). |
|||
The alphabets of the [[North Germanic languages]], [[Catalan language|Catalan]], [[Romanian language|Romanian]], [[Finnish language|Finnish]], [[French language|French]], [[German language|German]], [[Italian language|Italian]], [[Portuguese language|Portuguese]] and [[Spanish language|Spanish]] are all extensions of the [[Latin alphabet]]. The additional characters are typically the ones that become corrupted, making texts only mildly unreadable with mojibake: |
|||
*[[å]], [[ä]], [[ö]] in [[Finnish language|Finnish]] and [[Swedish language|Swedish]] (š and ž are present in some Finnish loanwords, é marginally in Swedish, mainly also in loanwords) |
|||
*à, ç, è, é, ï, í, ò, ó, ú, ü in [[Catalan language|Catalan]] |
|||
*[[æ]], [[ø]], å in [[Norwegian language|Norwegian]] and [[Danish language|Danish]] as well as optional acute accents on é etc for disambiguation |
|||
*á, é, ó, [[IJ (digraph)|ij]], è, ë, ï in [[Dutch language|Dutch]] |
|||
*ä, ö, [[ü]], and [[ß]] in [[German language|German]] |
|||
*á, [[ð]], [[í]], [[ó]], [[ú]], [[ý]], æ, ø in [[Faroese language|Faroese]] |
|||
*á, ð, [[é]], í, ó, ú, ý, [[þ]], æ, ö in [[Icelandic language|Icelandic]] |
|||
*à, â, ç, è, é, ë, ê, ï, î, ô, ù, û, ü, ÿ, æ, œ in [[French language|French]] |
|||
*à, è, é, ì, ò, ù in [[Italian language|Italian]] |
|||
*á, é, í, [[ñ]], ó, ú, ü, [[Inverted question and exclamation marks|¡, ¿]] in [[Spanish language|Spanish]] |
|||
*à, á, â, ã, ç, é, ê, í, ó, ô, õ, ú in [[Portuguese language|Portuguese]] ([[Diaeresis (diacritic)#Non-silent vowels|ü]] no longer used) |
|||
*á, é, í, ó, ú in [[Irish language|Irish]] |
|||
*à, è, ì, ò, ù in [[Scottish Gaelic]] |
|||
*ă, â, î, ș, ț in [[Romanian language|Romanian]] |
|||
*[[Pound sign|£]] in [[British English]] (æ and œ are rarely used) |
|||
... and their uppercase counterparts, if applicable. |
|||
These are languages for which the [[ISO 8859-1|ISO 8859-1]] character set (also known as ''Latin 1'' or ''Western'') has been in use. However, ISO 8859-1 has been obsoleted by two competing standards, the backward compatible [[Windows-1252]], and the slightly altered [[ISO 8859-15|ISO 8859-15]]. Both add the [[Euro sign]] € and the French œ, but otherwise any confusion of these three character sets does not create mojibake in these languages. Furthermore, it is always safe to interpret ISO 8859-1 as Windows-1252, and fairly safe to interpret it as ISO 8859-15, in particular with respect to the Euro sign, which replaces the rarely used [[Currency sign (generic)|currency sign]] (¤). However, with the advent of [[UTF-8]], mojibake has become more common in certain scenarios, e.g. exchange of text files between [[UNIX]] and [[Microsoft Windows|Windows]] computers, due to UTF-8's incompatibility with Latin-1 and Windows-1252. But UTF-8 has the ability to be directly recognised by a simple algorithm, so that well written software should be able to avoid mixing UTF-8 up with other encodings, so this was most common when many had software not supporting UTF-8. Most of these languages were supported by MS-DOS default CP437 and other machine default encodings, except ASCII, so problems when buying an operating system version were less common. Windows and MS-DOS are not compatible, however. |
|||
Newspapers have dealt with this problem in various ways, including using software to combine two existing, similar characters; using a picture of the personality; or simply substituting a homophone for the rare character in the hope that the reader would be able to make the correct inference. For example: Zhu Rongji's name often appears as 朱熔基 instead of its correct form 朱镕基; where the character 镕 ({{zh|p=róng}}) has been replaced with 熔 ({{zh|p=róng}}), in this case both meaning the same.<ref>{{cite web|last=Schäfer|first=Ingo|title=Premodern Chinese Written Language, an Introduction|url=http://www.fu-sinologie.de/Sch%E4fer/Klassisches%20Chinesisch/Wanyan%20Intro.doc}}</ref> |
|||
In Swedish, Norwegian, Danish and German, vowels are rarely repeated, and it is usually obvious when one character gets corrupted, e.g. the second letter in the Swedish word ''{{lang|sv|kärlek}}'' ("love") when it is encoded in UTF-8 but decoded in Western, producing "kärlek", or ''für'' in German, which becomes "für". This way, even though the reader has to guess what the original letter is, almost all texts remain legible. Finnish, on the other hand, frequently uses repeating vowels in words like ''{{lang|fi|hääyö}}'' ("wedding night") which can make corrupted text very hard to read (e.g. ''{{lang|fi|hääyö}}'' appears as "hääyö"). Icelandic has ten possibly confounding characters, and Faroese has eight, making many words almost completely unintelligible when corrupted (e.g. Icelandic ''{{lang|is|þjóðlöð}}'', "outstanding hospitality", appears as "þjóðlöð"). |
|||
===Central Europe=== |
|||
Users of [[Central Europe|Central]] and [[Eastern Europe]]an languages can also be affected. Because most computers were not connected to any network during the mid- to late-1980s, there were different character encodings for ''every'' language with [[diacritic]]al characters. |
|||
In German, ''{{lang|de|Buchstabensalat}}'' ("letter salad") is a common term for this phenomenon, in Spanish, ''{{lang|es|deformación}}'' (literally "deformation") is used, and in Portuguese, ''{{lang|pt|desformatação}}'' (literally "deformatting") is used. |
|||
[[File:Moya Strana Mojibake.jpg|thumb|Mojibake caused by a song title in Cyrillic ([[Moya Strana, Moya Bălgaria|Моя Страна]]) on a car audio system]] |
|||
Some users transliterate their writing when using a computer, either by omitting the problematic diacritics, or by using digraph replacements (å → aa, ä/æ → ae, ö/ø → oe, ü → ue etc.). Thus, an author might write "ueber" instead of "über", which is standard practice in German when [[umlaut (diacritic)|umlaut]]s are not available. The latter practice seems to be better tolerated in the German language sphere than in the [[Nordic countries]]. For example, in Norwegian, digraphs are associated with archaic Danish, and may be used jokingly. However, digraphs are useful in communication with other parts of the world. As an example, the Norwegian football player [[Ole Gunnar Solskjær]] had his last name spelled "SOLSKJAER" on his uniform when he played for [[Manchester United]]. |
|||
===Russian and other Cyrillic alphabets {{anchor|Russian and other Cyrillic-based scripts}}===<!-- A #-link leads to here from #Countries of the former Yugoslavia --> |
|||
[[File:Letter to Russia with krokozyabry.jpg|300px|right|Example of Mojibake corrected upon identification.]] |
|||
Mojibake may be colloquially called ''krakozyabry'' (кракозя́бры, [[IPA]]:{{IPA|krɐkɐˈzʲæbrɪ̈}}) in [[Russian language|Russian]], which was and remains complicated by several systems for encoding [[Cyrillic]].<ref>p. 141, ''Control + Alt + Delete: A Dictionary of Cyberslang'', Jonathon Keats, Globe Pequot, 2007, ISBN 1-59921-039-8.</ref> The [[Soviet Union]] and early [[Russian Federation]] developed [[KOI character encodings|KOI encodings]] (Kod Obmena Informatsiey, Код Обмена Информацией which translates to "Code for Information Exchange"). This began with Cyrillic-only 7-bit [[KOI7]], based on [[ASCII]] but with Latin and some other characters replaced with Cyrillic letters. Then came 8-bit [[KOI8]] encoding that is an [[extended ASCII|ASCII extension]] which encodes Cyrillic letters only with high-bit set octets corresponding to 7-bit codes from KOI7. That's why KOI8 text, even Russian, remains partially readable after stripping the eighth bit, which was considered as a major advantage in the age of [[8BITMIME]]-unaware email systems. Eventually KOI8 gained different flavors for Russian/Bulgarian ([[KOI8-R]]), Ukrainian ([[KOI8-U]]), [[Belarusian alphabet|Belarusian]] (KOI8-RU) and even [[Tajik alphabet#Cyrillic|Tajik]] (KOI8-T). |
|||
An artifact of [[UTF-8]] misinterpreted as [[ISO 8859-1|ISO 8859-1]], "{{lang|no|Ring meg nå}}" being rendered as "Ring meg nÃ¥", was seen in 2014 in an SMS scam targeting Norway.<ref>{{cite web|title=sms-scam|url=http://tv2.no/2014/06/18/nyheter/5718240|date=June 18, 2014|access-date=June 19, 2014|language=Norwegian}}</ref> |
|||
Meanwhile in the West, [[Code page 866]] supported [[Ukrainian language|Ukrainian]] and [[Belarusian language|Belarusian]] as well as Russian/[[Bulgarian language|Bulgarian]] in [[MS-DOS]]. For [[Microsoft Windows]], [[Windows-1251|Code Page 1251]] added support for [[Serbian Cyrillic alphabet|Serbian]] and [[Cyrillic alphabet variants#Slavic languages|other Slavic variants of Cyrillic]]. |
|||
{| class="wikitable" style="text-align: center;" |
|||
|+ |
|||
|- |
|||
! Swedish example !! Source encoding !! Target encoding !! Result<BR />{{red|(Characters in red are incorrect.)}} |
|||
|- |
|||
| rowspan="6" | [[:sv:Smörgås|Smörgås]]<BR />([[open sandwich]]) |
|||
|- |
|||
| [[Code page 437|MS-DOS 437]] || rowspan="2" | [[ISO 8859-1|ISO 8859-1]] || Sm{{red|}}rg{{red|}}s |
|||
|- |
|||
| rowspan="3" | UTF-8 || Sm{{red|ö}}rg{{red|å}}s |
|||
|- |
|||
| IBM/CP037 (EBCDIC) || {{red|ë_C¶ÊÅCvË}} |
|||
|- |
|||
| rowspan="2" | [[Mac Roman]] || Sm{{red|ö}}rg{{red|å}}s |
|||
|- |
|||
| ISO 8859-1 || Sm{{red|ˆ}}rg{{red|Â}}s |
|||
|} |
|||
The same problem occurs also in Romanian, see these examples: |
|||
Most recently, the [[Cyrillic Unicode block|Unicode]] encoding includes code points for practically all the characters of all the world's languages, including all Cyrillic characters. |
|||
Before Unicode, it was necessary to match text encoding with a font using the same encoding system. Failure to do this produced unreadable gibberish whose specific appearance varied depending on the exact combination of text encoding and font encoding. Accented vowels were symptomatic of trying to view any Cyrillic encoding with a font limited to the Latin alphabet. In general, Cyrillic gibberish was symptomatic of using the wrong Cyrillic font. |
|||
{| class="wikitable" style="text-align: center;" |
|||
In [[Bulgarian language|Bulgarian]], mojibake is often called ''maymunitsa'' (маймуница), meaning monkey's alphabet. In [[Serbian language|Serbian]], it is called {{lang|sr|ђубре}} (''đubre''), meaning [[Waste|trash]]. Unlike the former USSR, South Slavs never used something like KOI8, and Code Page 1251 was the dominant Cyrillic encoding there before Unicode. Therefore these languages experienced fewer encoding incompatibility troubles than Russian. In 1980s, Bulgarian computers used its own [[MIK Code page|MIK encoding]], a bit similar (but incompatible with) CP866, though. |
|||
|+ |
|||
|- |
|||
! Romanian example !! Source encoding !! Target encoding !! Result<BR />{{red|(Characters in red are incorrect.)}} |
|||
|- |
|||
| rowspan="8" | [[:ro:Cenușă|Cenușă]]<BR />([[ash]]) |
|||
|- |
|||
| rowspan="7" | [[UTF-8]] |
|||
|- |
|||
| [[ASCII]] || Cenu{{red|șă}} |
|||
|- |
|||
| [[ISO 8859-2]] || Cenu{{red|ČÄ}} |
|||
|- |
|||
| [[Code page 737|OEM 737]] || Cenu{{red|╚β─Δ}} |
|||
|- |
|||
| [[Shift-JIS]] || Cenu{{red|ネ卞 }} |
|||
|- |
|||
| [[TIS-620]] || Cenu{{red|ศฤ}} |
|||
|- |
|||
| IBM/CP037 (EBCDIC) || {{red|äÁ>ÍHrDc}} |
|||
|} |
|||
===Central and Eastern European=== |
|||
===Polish=== |
|||
Users of [[Central Europe|Central]] and [[Eastern Europe]]an languages can also be affected. Because most computers were not connected to any network during the mid- to late-1980s, there were different character encodings for every language with [[diacritic]]al characters (see [[ISO/IEC 8859]] and [[KOI-8]]), often also varying by operating system. |
|||
In [[Poland]], every company selling early [[DOS]] computers created its own encoding, and simply reprogrammed the [[EPROM]]s of the video cards (typically [[Color Graphics Adapter|CGA]], [[Enhanced Graphics Adapter|EGA]], or [[Hercules Graphics Card|Hercules]]) with the needed glyphs for Polish — arbitrarily located without reference to where other computer sellers had placed them. Additionally, users of then-popular home computers (such as the [[Atari ST]]) invented their own encodings, incompatible with international standards ([[ISO 8859-2]]), vendor standards (IBM [[CP852]], [[Windows-1250|Windows CP1250]]) and locally agreed-upon PC/MS DOS standards ([[Mazovia encoding|Mazovia]]). The situation began to improve when, after pressure from academic and user groups, [[ISO 8859-2]] succeeded as the "Internet standard" with limited support of the dominant vendors' software (today largely replaced by Unicode). With the numerous problems caused by the variety of encodings, even today some users tend to refer to Polish diacritical characters as ''krzaczki'' [Ksha-Chkee] ("little bushes"). |
|||
====Hungarian==== |
|||
===Nordic languages and German=== |
|||
In [[Hungarian language|Hungarian]], the phenomenon is referred to as ''betűszemét'', meaning "letter garbage". Hungarian has been particularly susceptible as it contains the accented letters á, é, í, ó, ú, ö, ü (all present in the Latin-1 character set), plus the two characters [[ő]] and [[ű]] which are not in Latin-1. These two characters can be correctly encoded in Latin-2, Windows-1250, and Unicode. However, before Unicode became common in e-mail clients, e-mails containing Hungarian text often had the letters ő and ű corrupted, sometimes to the point of unrecognizability. It is common to respond to a corrupted e-mail with the nonsense phrase [[w:hu:Árvíztűrő tükörfúrógép|"Árvíztűrő tükörfúrógép"]] (literally "Flood-resistant mirror-drilling machine") which contains all accented characters used in Hungarian. |
|||
Among the Nordic languages, mojibake is not uncommon, but is more of an annoyance than a problem. [[Finnish language|Finnish]] and [[Swedish language|Swedish]] use the letters of the [[English alphabet]] and three more characters: å, ä and ö, and typically these three are the only ones that become corrupted. The situation is similar for Norwegian and Danish, except the three affected letters are æ, ø and å, and German, where the affected letters are ä, ö, ü and ß. In Swedish, Norwegian, Danish and German, vowels are rarely repeated, and it is usually obvious when one character gets corrupted, such as the second letter in "kärlek" (''kärlek'', "love"). This way, even though the reader has to guess among å, ä and ö, almost all texts remain perfectly readable. However, [[Finnish language|Finnish]] does have repeating vowels in words like ''hääyö'' ("wedding night") which can sometimes render text very hard to read; that word can appear as "Hääyö". [[Icelandic language|Icelandic]] is worse off, with ten possibly confounding characters: [[á]], [[ð]], [[é]], [[í]], [[ó]], [[ú]], [[ý]], [[þ]], [[æ]] and [[ö]]. |
|||
=== |
=====Examples===== |
||
{| class="wikitable" width="90%" style="text-align: center;" |
|||
Another type of mojibake occurs when text is erroneously parsed in a multi-byte encoding, such as one of the east Asian encodings. With this kind of mojibake more than one (typically two) characters are corrupted at once, e.g. "k舐lek" (''kärlek'') in Swedish, where "är" is parsed as "舐". Compared to the above mojibake, this is harder to read, since letters unrelated to the problematic å, ä or ö are missing, and is especially problematic for short words starting with å, ä or ö such as "än" (which becomes "舅"). Since two letters are combined, the mojibake also seems more random (over 50 variants compared to the normal three, not counting the rarer capitals). In some rare cases, an entire text string which happens to include a pattern of particular word lengths, such as the sentence "[[Bush hid the facts]]", may be misinterpreted. |
|||
! Hungarian example !! Source encoding !! Target encoding !! width="250px" | Result !! Occurrence |
|||
|- |
|||
| rowspan="13" | ÁRVÍZTŰRŐ TÜKÖRFÚRÓGÉP<BR />árvíztűrő tükörfúrógép |
|||
|- |
|||
! [[UTF-8]] [[Quoted-printable]] || rowspan="2" | [[ASCII|7-bit ASCII]] |
|||
| {{red|<nowiki>=C3=81</nowiki>}}RV{{red|<nowiki>=C3=8D</nowiki>}}ZT{{red|<nowiki>=C5=B0</nowiki>}}R{{red|<nowiki>=C5=90</nowiki>}} T{{red|<nowiki>=C3=9C</nowiki>}}K{{red|<nowiki>=C3=96</nowiki>}}RF{{red|<nowiki>=C3=9A</nowiki>}}R{{red|<nowiki>=C3=93</nowiki>}}G{{red|<nowiki>=C3=89</nowiki>}}P {{red|<nowiki>=C3=A1</nowiki>}}rv{{red|<nowiki>=C3=AD</nowiki>}}zt{{red|<nowiki>=C5=B1</nowiki>}}r{{red|<nowiki>=C5=91</nowiki>}} t{{red|<nowiki>=C3=BC</nowiki>}}k{{red|<nowiki>=C3=B6</nowiki>}}rf{{red|<nowiki>=C3=BA</nowiki>}}r{{red|<nowiki>=C3=B3</nowiki>}}g{{red|<nowiki>=C3=A9</nowiki>}}p |
|||
| rowspan="2" | Mainly caused by incorrectly configured mail servers but may occur in [[SMS]] messages on some cell phones as well. |
|||
|- |
|||
! [[ISO 8859-2]] [[Quoted-printable]] |
|||
| {{red|<nowiki>=C1</nowiki>}}RV{{red|<nowiki>=CD</nowiki>}}ZT{{red|<nowiki>=DB</nowiki>}}R{{red|<nowiki>=D5</nowiki>}} T{{red|<nowiki>=DC</nowiki>}}K{{red|<nowiki>=D6</nowiki>}}RF{{red|<nowiki>=DA</nowiki>}}R{{red|<nowiki>=D3</nowiki>}}G{{red|<nowiki>=C9</nowiki>}}P<BR />{{red|<nowiki>=E1</nowiki>}}rv{{red|<nowiki>=ED</nowiki>}}zt{{red|<nowiki>=FB</nowiki>}}r{{red|<nowiki>=F5</nowiki>}} t{{red|<nowiki>=FC</nowiki>}}k{{red|<nowiki>=F6</nowiki>}}rf{{red|<nowiki>=FA</nowiki>}}r{{red|<nowiki>=F3</nowiki>}}g{{red|<nowiki>=E9</nowiki>}}p |
|||
|- |
|||
! [[CWI-2]] !! rowspan="2" | [[CP 437]] |
|||
| {{red|Å}}RV{{red|ì}}ZT{{red|ÿ}}R{{red|º}} TÜKÖRF{{red|ù}}R{{red|ò}}GÉP<BR />árvízt{{red|û}}r{{red|ô}} tükörfúrógép |
|||
| The [[CWI-2]] encoding was designed so that Hungarian text remains fairly well-readable even if the device on the receiving end uses one of the default encodings ([[CP 437]] or [[CP 850]]). This encoding was used very heavily between the early 1980s and early 1990s, but nowadays it is completely deprecated. |
|||
|- |
|||
! rowspan="4" | [[CP 852]] |
|||
| {{red|╡}}RV{{red|╓}}ZT{{red|δ}}R{{red|è}} TÜKÖRF{{red|Θ}}R{{red|α}}GÉP<BR />árvízt{{red|√}}r{{red|ï}} tükörfúrógép |
|||
| rowspan="2" | This was very common in the days of [[DOS]], as the text was often encoded using code page 852 ("Central European"), but the software on the receiving end often did not support CP 852 and instead tried to display text using [[CP 437]] or [[CP 850]]. Lowercase letters are mainly correct, except for ű and ő. Ü/ü and Ö/ö are correct because CP 437 and CP 850 were made compatible with German. Although this is rare nowadays, it can still be seen in places such as on printed prescriptions and cheques. |
|||
|- |
|||
! [[CP 850]] |
|||
| ÁRVÍZT{{red|Ù}}R{{red|è}} TÜKÖRFÚRÓGÉP<BR />árvízt{{red|¹}}r{{red|ï}} tükörfúrógép |
|||
|- |
|||
! [[Windows-1250]] |
|||
| {{red|µ}}RV{{red|Ö}}ZT{{red|ë}}R{{red|Š}} T{{red|š}}K{{red|™}}RF{{red|é}}R{{red|ŕ}}G{{red|}}P<BR />{{red| }}rv{{red|ˇ}}ztűr{{red|‹}} t{{red|}}k{{red|"}}rf{{red|Ł}}r{{red|˘}}g{{red|‚}}p |
|||
| Both encodings are Central European, but the text is encoded with the DOS encoding and decoded with the Windows encoding. The use of ű is correct. |
|||
|- |
|||
! rowspan="2" | [[Mac Roman]] |
|||
| {{red|µ}}RV{{red|÷}}ZT{{red|Î}}R{{red|ä}} T{{red|ö}}K{{red|ô}}RF{{red|È}}R{{red|‡}}G{{red|ê}}P<BR />{{red|†}}rv{{red|°}}zt{{red|˚}}r{{red|ã}} t{{red|Å}}k{{red|î}}rf{{red|£}}r{{red|¢}}g{{red|Ç}}p |
|||
| rowspan="2" | Also common in the days of DOS, this could be seen when Apple computers tried to display Hungarian text sent using DOS or Windows machines, as they would often default to Apple's own encoding. |
|||
|- |
|||
! rowspan="3" | [[Windows-1250]] |
|||
| {{red|¡}}RV{{red|Õ}}ZT{{red|€}}R{{red|’}} T{{red|‹}}K{{red|÷}}RF{{red|⁄}}R{{red|”}}G{{red|…}}P<BR />{{red|·}}rv{{red|Ì}}zt{{red|˚}}r{{red|ı}} t{{red|¸}}k{{red|ˆ}}rf{{red|˙}}r{{red|Û}}g{{red|È}}p |
|||
|- |
|||
! [[CP 852]] |
|||
| {{red|┴}}RV{{red|═}}ZT{{red|█}}R{{red|Ň}} T{{red|▄}}K{{red|Í}}RF{{red|┌}}R{{red|Ë}}G{{red|╔}}P<BR />{{red|ß}}rv{{red|Ý}}ztűr{{red|§}} t{{red|Ř}}k{{red|÷}}rf{{red|˙}}r{{red|ˇ}}g{{red|Ú}}p |
|||
| Both encodings are Central European, but the text is encoded with the Windows encoding and decoded with the DOS encoding. The use of ű is correct. |
|||
|- |
|||
! rowspan="2" | [[Windows-1252]] |
|||
| ÁRVÍZT{{red|Û}}R{{red|Õ}} TÜKÖRFÚRÓGÉP<BR />árvízt{{red|û}}r{{red|õ}} tükörfúrógép |
|||
| The default Western European Windows encoding is used instead of the Central-European one. Only ő-Ő (õ-Õ) and ű-Ű (û-Û) are wrong, and the text is completely readable. This is the most common error nowadays; due to ignorance, it occurs often on webpages or even in printed media. |
|||
|- id=HungarianUTF8 |
|||
! rowspan="2" | [[UTF-8]] |
|||
| {{red|Ã}}RV{{red|Ã}}ZT{{red|Å°}}R{{red|Å}} T{{red|Ãœ}}K{{red|Ö}}RF{{red|Ú}}R{{red|Ã"}}G{{red|É}}P<BR />{{red|á}}rv{{red|Ã}}zt{{red|ű}}r{{red|Å‘}} t{{red|ü}}k{{red|ö}}rf{{red|ú}}r{{red|ó}}g{{red|é}}p |
|||
| rowspan="2" | Mainly caused by web services or webmail clients that are configured incorrectly or not tested for international usage (as the problem remains concealed for English texts). In this case the actual (often generated) content is in [[UTF-8]], but some older software may default to localized encodings if UTF-8 is not explicitly specified in the HTML headers. |
|||
|- |
|||
! [[Mac Roman]] |
|||
| {{red|Á}}RV{{red|Í}}ZT{{red|Ű}}R{{red|Ő}} T{{red|Ü}}K{{red|Ö}}RF{{red|Ú}}R{{red|Ó}}G{{red|É}}P<BR />{{red|á}}rv{{red|í}}zt{{red|ű}}r{{red|ő}} t{{red|ü}}k{{red|ö}}rf{{red|ú}}r{{red|ó}}g{{red|é}}p |
|||
|} |
|||
====Polish==== |
|||
===Countries of the former Yugoslavia=== |
|||
Prior to the creation of [[ISO 8859-2]] in 1987, users of various computing platforms used their own [[Polish code pages|character encodings]] such as [[AmigaPL]] on Amiga, Atari Club on Atari ST and Masovia, IBM [[CP852]], [[Mazovia encoding|Mazovia]] and [[Windows-1250|Windows CP1250]] on IBM PCs. Polish companies selling early [[DOS]] computers created their own mutually-incompatible ways to encode Polish characters and simply reprogrammed the [[EPROM]]s of the video cards (typically [[Color Graphics Adapter|CGA]], [[Enhanced Graphics Adapter|EGA]], or [[Hercules Graphics Card|Hercules]]) to provide [[hardware code page]]s with the needed glyphs for Polish—arbitrarily located without reference to where other computer sellers had placed them. |
|||
Slavic languages of [[Socialist Federal Republic of Yugoslavia|former Yugoslavia]] ([[Croatian language|Croatian]], [[Bosnian language|Bosnian]], [[Serbian language|Serbian]]) add to the basic Latin alphabet the letters š, đ, č, ć, ž, and their capital counterparts Š, Đ, Č, Ć, Ž. All of these letters are defined in [[ISO/IEC 8859-2|Latin-2]] and [[Windows-1250]], while only some (š, Š, ž, Ž, Đ) exist in the usual OS-default [[Windows-1252|Western]], and are there because of some other languages. |
|||
The situation began to improve when, after pressure from academic and user groups, [[ISO 8859-2]] succeeded as the "Internet standard" with limited support of the dominant vendors' software (today largely replaced by Unicode). With the numerous problems caused by the variety of encodings, even today some users tend to refer to Polish diacritical characters as {{Lang|pl|krzaczki}} ({{IPA|[ˈkʂät͜ʂ.ki]}}, lit. "little shrubs"). |
|||
Although even those that exist in extended Western ASCII (Windows-1252) are not immune to errors, the ones that don't are much more prone to errors. Thus, even nowadays, "šđčćž ŠĐČĆŽ" is all too often interpreted as "šðèæž ŠÐÈÆŽ", making the users wonder where ð, è, æ, È, Æ are used. |
|||
====Russian and other Cyrillic-based alphabets {{anchor|Russian and other Cyrillic-based alphabets}}====<!-- A #-link leads to here from #Countries of the former Yugoslavia --> |
|||
Mojibake is colloquially called {{Lang|ru-Latn|krakozyabry}} ({{Lang|ru|кракозя́бры|italic=unset}} {{IPA|ru|krɐkɐˈzʲæbrɪ̈|}}) in [[Russian language|Russian]], which was and remains complicated by several systems for encoding [[Cyrillic]].<ref>p. 141, ''Control + Alt + Delete: A Dictionary of Cyberslang'', Jonathon Keats, Globe Pequot, 2007, {{ISBN|1-59921-039-8}}.</ref> The [[Soviet Union]] and early [[Russian Federation]] developed [[KOI character encodings|KOI encodings]] ({{Lang|ru-Latn|Kod Obmena Informatsiey|italic=unset}}, {{Lang|ru|Код Обмена Информацией|italic=unset}}, which translates to "Code for Information Exchange"). This began with Cyrillic-only 7-bit [[KOI7]], based on [[ASCII]] but with Latin and some other characters replaced with Cyrillic letters. Then came 8-bit [[KOI8]] encoding that is an [[extended ASCII|ASCII extension]] which encodes Cyrillic letters only with high-bit set octets corresponding to 7-bit codes from KOI7. It is for this reason that KOI8 text, even Russian, remains partially readable after stripping the eighth bit, which was considered as a major advantage in the age of [[8BITMIME]]-unaware email systems. For example, the words "{{Lang|ru|Школа русского языка|italic=unset}}" ({{Lang|ru-Latn|shkola russkogo yazyka}}), when encoded in KOI8 and passed through the high bit stripping process, end up being rendered as "[KOLA RUSSKOGO qZYKA". Eventually, KOI8 gained different flavors for Russian and Bulgarian ([[KOI8-R]]), Ukrainian ([[KOI8-U]]), [[Belarusian alphabet|Belarusian]] (KOI8-RU), and even [[Tajik Cyrillic alphabet|Tajik]] (KOI8-T). |
|||
Meanwhile, in the West, [[Code page 866]] supported [[Ukrainian language|Ukrainian]] and [[Belarusian language|Belarusian]], as well as Russian and [[Bulgarian language|Bulgarian]] in [[MS-DOS]]. For [[Microsoft Windows]], [[Windows-1251|Code Page 1251]] added support for [[Serbian Cyrillic alphabet|Serbian]] and [[Cyrillic alphabet variants#Slavic languages|other Slavic variants of Cyrillic]]. |
|||
Most recently, the [[Cyrillic (Unicode block)|Unicode]] encoding includes [[code point]]s for virtually all characters in all languages, including all Cyrillic characters. |
|||
Before Unicode, it was necessary to match text encoding with a font using the same encoding system; failure to do this produced unreadable [[gibberish]] whose specific appearance varied depending on the exact combination of text and font encoding. For example, attempting to view non-Unicode Cyrillic text using a font that is limited to the Latin alphabet, or using the default ("Western") encoding, typically results in text that consists almost entirely of capitalized vowels with diacritical marks (e.g. KOI8 "{{Lang|ru|Библиотека|italic=unset}}" ({{Lang|ru-Latn|biblioteka}}, library) becomes "âÉÂÌÉÏÔÅËÁ", while "Школа русского языка" ({{Lang|ru-Latn|shkola russkogo yazyka}}, Russian-language school) becomes "ûËÏÌÁ ÒÕÓÓËÏÇÏ ÑÚÙËÁ"). Using Code Page 1251 to view text in KOI8, or vice versa, results in garbled text that consists mostly of capital letters (KOI8 and Code Page 1251 share the same ASCII region, but KOI8 has uppercase letters in the region where Code Page 1251 has lowercase, and vice versa). |
|||
During the early years of the Russian sector of the World Wide Web, both KOI8 and Code Page 1251 were common. Nearly all websites now use Unicode, but {{as of|2023|11||lc=y|post=,}} an estimated 0.35% of all web pages worldwide – all languages included – are still encoded in Code Page 1251, while less than 0.003% of sites are still encoded in KOI8-R.<ref>{{cite web|url=https://w3techs.com/technologies/details/en-windows1251|title=Usage statistics of Windows-1251 for websites |website=w3techs.com}}</ref><ref>{{cite web|url=https://w3techs.com/technologies/details/en-koi8r|title=Usage statistics of KOI8-R for websites |website=w3techs.com}}</ref> Though the HTML standard includes the ability to specify the encoding for any given web page in its source,<ref>{{cite web|url=https://www.w3schools.com/TAGs/att_meta_charset.asp|title=Declaring character encodings in HTML}}</ref> this is sometimes neglected, forcing the user to switch encodings in the browser manually. |
|||
In Bulgarian, mojibake is often called {{Lang|bg-Latn|majmunica}} ({{Lang|bg|маймуница|italic=unset}}), meaning "monkey's [alphabet]". In [[Serbian language|Serbian]], it is called {{Lang|sr-Latn|đubre}} ({{Lang|sr|ђубре}}), meaning "[[waste|trash]]". Unlike the former USSR, South Slavs never used something like KOI8, and Code Page 1251 was the dominant Cyrillic encoding before Unicode; therefore, these languages experienced fewer encoding incompatibility troubles than Russian. In the 1980s, Bulgarian computers used their own [[MIK Code page|MIK encoding]], which is superficially similar to (although incompatible with) CP866. |
|||
{| class="wikitable" style="text-align: center;" |
|||
|+ Example |
|||
|- |
|||
! Original text !! Source encoding!! Target encoding !! Result |
|||
|- |
|||
| rowspan="12" style="text-align: center;" | {{Lang|ru|Кракозябры|italic=unset}} |
|||
|- |
|||
| Windows-1251 || KOI8-R || йПЮЙНГЪАПШ |
|||
|- |
|||
| rowspan="2" | KOI8-R || [[Windows-1251]] || лТБЛПЪСВТЩ |
|||
|- |
|||
| rowspan="4" | Windows-1252 || ëÒÁËÏÚÑÂÒÙ |
|||
|- |
|||
| MS-DOS 855 || Çá ÆÖóÞ¢áñ |
|||
|- |
|||
| Windows-1251 || Êðàêîçÿáðû |
|||
|- |
|||
| rowspan="6" | UTF-8 || КракозÑбры |
|||
|- |
|||
| KOI8-R || п я─п╟п╨п╬п╥я▐п╠я─я▀<BR />''(The second character is a [[non-breaking space]])'' |
|||
|- |
|||
| MS-DOS 855 || лџЛђл░л║лЙлиЛЈл▒ЛђЛІ |
|||
|- |
|||
| Windows-1251 || Кракозябры |
|||
|- |
|||
| Mac Roman || {{not a typo|–ö—Ä–∞–∫–æ–∑—è–±—Ä—ã}} |
|||
|- |
|||
| [[Mac Cyrillic]] || –Ъ—А–∞–Ї–Њ–Ј—П–±—А—Л |
|||
|} |
|||
====Yugoslav languages==== |
|||
[[Croatian language|Croatian]], [[Bosnian language|Bosnian]], [[Serbian language|Serbian]] (the seceding varieties of [[Serbo-Croatian]] language) and [[Slovene language|Slovenian]] add to the basic Latin alphabet the letters š, đ, č, ć, ž, and their capital counterparts Š, Đ, Č, Ć, Ž (only č/Č, š/Š and ž/Ž are officially used in Slovenian, although others are used when needed, mostly in foreign names). All of these letters are defined in [[ISO/IEC 8859-2|Latin-2]] and [[Windows-1250]], while only some (š, Š, ž, Ž, Đ) exist in the usual OS-default [[Windows-1252]], and are there because of some other languages. |
|||
Although Mojibake can occur with any of these characters, the letters that are not included in Windows-1252 are much more prone to errors. Thus, even nowadays, "šđčćž ŠĐČĆŽ" is often displayed as "šðèæž ŠÐÈÆŽ", although ð, È, and Æ are never used in Slavic languages. |
|||
When confined to basic ASCII (most user names, for example), common replacements are: š→s, đ→dj, č→c, ć→c, ž→z (capital forms analogously, with Đ→Dj or Đ→DJ depending on word case). All of these replacements introduce ambiguities, so reconstructing the original from such a form is usually done manually if required. |
When confined to basic ASCII (most user names, for example), common replacements are: š→s, đ→dj, č→c, ć→c, ž→z (capital forms analogously, with Đ→Dj or Đ→DJ depending on word case). All of these replacements introduce ambiguities, so reconstructing the original from such a form is usually done manually if required. |
||
The [[Windows-1252]] encoding is important because the English versions of the Windows operating system are most widespread, not localized ones.{{citation needed|date=December 2014}} The reasons for this include a relatively small and fragmented market, increasing the price of high quality localization, a high degree of software piracy (in turn caused by high price of software compared to income), which discourages localization efforts, and people preferring English versions of Windows and other software.{{citation needed|date=August 2013}} |
|||
* Relatively small and fragmented market, increasing price of high quality localization. |
|||
* High degree of software piracy (in turn caused by high price of software compared to income), thus discouraging localization efforts. |
|||
* People prefer English version of OS and other software {{citation needed|date=August 2013}}. |
|||
The drive |
The drive to [[Differences between standard Bosnian, Croatian and Serbian|differentiate]] Croatian from Serbian, Bosnian from Croatian and Serbian, and now even [[Montenegrin alphabet|Montenegrin]] from the other three creates many problems. There are many different localizations, using different standards and of different quality. There are no common translations for the vast amount of computer terminology originating in English. In the end, people use English loanwords ("kompjuter" for "computer", "kompajlirati" for "compile," etc.), and if they are unaccustomed to the translated terms, they may not understand what some option in a menu is supposed to do based on the translated phrase. Therefore, people who understand English, as well as those who are accustomed to English terminology (who are most, because English terminology is also mostly taught in schools because of these problems) regularly choose the original English versions of non-specialist software. |
||
When Cyrillic script is used (for [[Macedonian language|Macedonian]] and partially Serbian language), the problem |
When Cyrillic script is used (for [[Macedonian language|Macedonian]] and partially [[Serbian language|Serbian]]), the problem is similar to [[#Russian and other Cyrillic-based scripts|other Cyrillic-based scripts]]. |
||
Newer versions of English Windows allow |
Newer versions of English Windows allow the [[Windows code page|code page]] to be changed (older versions require special English versions with this support), but this setting can be and often was incorrectly set. For example, Windows 98 and Windows Me can be set to most non-right-to-left [[SBCS|single-byte]] code pages including 1250, but only at install time. |
||
=== |
===Caucasian languages=== |
||
The writing systems of certain [[languages of the Caucasus]] region, including the scripts of [[Georgian language|Georgian]] and [[Armenian language|Armenian]], may produce mojibake. This problem is particularly acute in the case of [[ArmSCII]] or ARMSCII, a set of obsolete character encodings for the Armenian alphabet which have been superseded by Unicode standards. ArmSCII is not widely used because of a lack of support in the computer industry. For example, [[Microsoft Windows]] does not support it. |
|||
[[Hungarian language|Hungarian]] is another affected language, which uses the 26 basic English characters, plus the accented forms á, é, í, ó, ú, ö, ü (all present in the Latin-1 character set), plus the 2 characters [[ő]] and [[ű]], which are not in Latin-1. These 2 characters can be correctly encoded in Latin-2, Windows-1250 and Unicode. Before Unicode became common in e-mail clients, e-mails containing Hungarian text often had the letters ő and ű corrupted, sometimes to the point of unrecognizability. It is common to respond to an e-mail rendered unreadable by character mangling (referred to as "betűszemét", meaning "garbage lettering") with the phrase "Árvíztűrő tükörfúrógép", a nonsense phrase (literally "Flood-resistant mirror-drilling machine") containing all accented characters used in Hungarian. |
|||
=== |
===Asian encodings=== |
||
Another type of mojibake occurs when text encoded in a single-byte encoding is erroneously parsed in a multi-byte encoding, such as one of the encodings for [[East Asian languages]]. With this kind of mojibake more than one (typically two) characters are corrupted at once. For example, if the Swedish word {{Lang|sv|kärlek}} is encoded in Windows-1252 but decoded using GBK, it will appear as "k鋜lek", where "{{Lang|sv|är|italic=unset}}" is parsed as "鋜". Compared to the above mojibake, this is harder to read, since letters unrelated to the problematic å, ä or ö are missing, and is especially problematic for short words starting with å, ä or ö (e.g. "än" becomes "鋘"). Since two letters are combined, the mojibake also seems more random (over 50 variants compared to the normal three, not counting the rarer capitals). In some rare cases, an entire text string which happens to include a pattern of particular word lengths, such as the sentence "[[Bush hid the facts]]", may be misinterpreted. |
|||
A similar effect can occur in Indic text, even if the character set used is properly recognized by the application. This is because, in many Indic scripts, the rules by which individual letter symbols combine to create symbols for syllables may not be properly understood by a computer missing the appropriate software, even if the glyphs for the individual letter forms are available. |
|||
====Vietnamese==== |
|||
A particularly notable example of this is the old [[Logo of Wikipedia|Wikipedia logo]], which attempts to show the character analogous to "w" or "wi" (the first letter or syllable of "Wikipedia") on each of many puzzle pieces. Instead, the puzzle piece meant to bear the [[Devanagari]] character for "wi" used to show a somewhat nonsensical scribble with a dangling line at the end, easily recognizable as mojibake generated by a computer not configured to display Indic text. That this occurred in the venerable front-page logo and had never been corrected over many years has been seen as humorously emblematic of Wikipedia's alleged accuracy and reliability problems.<ref name="NYTimes">{{Cite news|title=Some Errors Defy Fixes: A Typo in Wikipedia’s Logo Fractures the Sanskrit|last=Cohen|first=Noam|url=http://www.nytimes.com/2007/06/25/technology/25wikipedia.html?_r=2&oref=slogin|date=June 25, 2007|accessdate=July 17, 2009|work=The New York Times}}</ref> The recently redesigned logo has fixed these errors. |
|||
{{Main|Vietnamese language and computers}} |
|||
In [[Vietnamese language|Vietnamese]], the phenomenon is called ''chữ ma'' ([[History of writing in Vietnam#Terminology|Hán–Nôm]]: 𡨸魔, "ghost characters") or ''loạn mã'' (from Chinese 乱码, ''luànmǎ''). It can occur when a computer tries to decode text encoded in UTF-8 as [[Windows-1258]], TCVN3 or VNI. In Vietnam, ''chữ ma'' was commonly seen on computers that ran pre-Vista versions of Windows or cheap mobile phones. |
|||
{| class="wikitable" style="text-align: center;" |
|||
Some Indic and Indic-derived scripts, most notably [[Lao script|Lao]], were not officially supported by [[Windows XP]] until the release of [[Windows Vista|Vista]].<ref>http://msdn.microsoft.com/en-us/library/ms776260(VS.85).aspx</ref> However, various sites have made free-to-download fonts. |
|||
|+ |
|||
|- |
|||
! Example !! Source encoding !! Target encoding !! Result |
|||
|- |
|||
| rowspan="5" | '''Trăm năm trong cõi người ta'''<BR />'''𤾓𢆥𥪞𡎝𠊛些'''<BR />(''[[Truyện Kiều]]'', [[Nguyễn Du]]) |
|||
|- |
|||
| rowspan="4" | UTF-8 |
|||
| Windows-1258 |
|||
| Tr{{Red|ă}}m n{{Red|ă}}m trong c{{Red|õ}}i ng{{Red|Æ°á»}}i ta<BR />{{Red|đ¤¾“đ¢†¥đ¥ªđ¡đ ›äº›}} |
|||
|- |
|||
| TCVN3 |
|||
| Tr{{Red|¨}}m n{{Red|¨}}m trong c{{Red|â}}i ng{{Red|ê}}i ta<BR />{{Red|�¤¾��¢��¥¥ª��¡�����¾ä��}} |
|||
|- |
|||
| VNI (Windows) |
|||
| Tr{{Red|aê}}m n{{Red|aê}}m trong c{{Red|oõ}}i ng{{Red|öôø}}i ta<BR />{{Red|�����������������������}} |
|||
|- |
|||
| Mac Roman |
|||
| Tr{{Red|ƒÉ}}m n{{Red|ƒÉ}}m trong c{{Red|√µ}}i ng{{Red|∆∞·ªù}}i ta<BR />{{Red|§æì¢Ü••™û°éù†äõ‰∫õ}} |
|||
|} |
|||
=== |
====Japanese==== |
||
{{Main|Japanese language and computers}} |
|||
Spanish is another affected language. It is known as ''deformación'' (literally deformation). Its problems with Mojibake are similar to Nordic languages. Spanish uses all 26 Latin letters, [[ñ]], acute accents on the five vowels ([[á]], [[é]], [[í]], [[ó]], [[ú]]), and rarely [[ü]]. [[Ñ]] and the accented vowels are regularly corrupted, since they are not available in [[ASCII]]. |
|||
In [[Japan]], mojibake is especially problematic as there are many different Japanese text encodings. Alongside Unicode encodings (UTF-8 and UTF-16), there are other standard encodings, such as [[Shift-JIS]] (Windows machines) and [[EUC-JP]] (UNIX systems). Even to this day, mojibake is often encountered by both Japanese and non-Japanese people when attempting to run software written for the Japanese market. |
|||
{| class="wikitable" style="text-align: center;" |
|||
===German=== |
|||
|+ |
|||
In [[German language|German]], ''Buchstabensalat'' (letter salad) is a common term for this phenomenon. |
|||
|- |
|||
! Original text !! Source encoding !! Target encoding !! Result |
|||
|- |
|||
| rowspan="10" | このメールは皆様へのメッセージです。 |
|||
|- |
|||
| rowspan="7" | UTF-8 |
|||
|- |
|||
| [[UTF-7]] || ���̃��(�q���Y�_�C�G�b�g) |
|||
|- |
|||
| EUC-JP || �����<�若������罕��吾���<���祉�若�吾�с���� |
|||
|- |
|||
| Shift-JIS || 縺薙�繝。繝シ繝ォ縺ッ逧�ァ倥∈縺ョ繝。繝�そ繝シ繧ク縺ァ縺吶� |
|||
|- |
|||
| Mac Roman || {{not a typo|このメールは皆様へのメッセージです。}} |
|||
|- |
|||
| ISO 8859-6 || كك�ك�ك�ك�ك�هن�ك�ك�ك�كك؛ك�ك�ك�كك |
|||
|- |
|||
| rowspan="3" | Windows-1252 || ã“ã®ãƒ¡ãƒ¼ãƒ«ã¯çš†æ§˜ã¸ã®ãƒ¡ãƒƒã‚»ãƒ¼ã‚¸ã§ã™ã€‚ |
|||
|- |
|||
| EUC-JP || ¤³¤Î¥á¡¼¥ë¤Ï³§ÍͤؤΥá¥Ã¥»¡¼¥¸¤Ç¤¹¡£ |
|||
|- |
|||
| Shift-JIS || ‚±‚̃[ƒ‹‚ÍŠF—l‚ւ̃ƒbƒZ[ƒW‚Å‚·B |
|||
|} |
|||
=== |
====Chinese==== |
||
In [[Chinese language|Chinese]], the same phenomenon is called ''Luàn mǎ'' ([[Pinyin]], [[Simplified Chinese]] {{lang|zh-Hans|乱码}}, [[Traditional Chinese]] {{lang|zh-Hant|亂碼}}, meaning 'chaotic code'), and can occur when computerised text is encoded in one [[Chinese character encoding]] but is displayed using the wrong encoding. When this occurs, it is often possible to fix the issue by switching the character encoding without loss of data. The situation is complicated because of the existence of several Chinese character encoding systems in use, the most common ones being: [[Unicode]], [[Big5]], and [[Guobiao code|Guobiao]] (with several backward compatible versions), and the possibility of Chinese characters being encoded using Japanese encoding. |
|||
Another affected language is [[Arabic language|Arabic]] (see [[#Example|below]]). |
|||
It is relatively easy to identify the original encoding when ''luànmǎ'' occurs in Guobiao encodings: |
|||
===PETSCII and European languages=== |
|||
{| class="wikitable" style="text-align: center;" |
|||
[[Commodore International|Commodore]] brand [[8-bit]] computers used [[PETSCII]] encoding, particularly notable for ''inverting'' the upper and lower case compared to standard [[ASCII]]. PETSCII printers worked fine on other computers of the era, but flipped the case of all letters. |
|||
! Original text !! Source encoding !! Target encoding !! Result !! Note |
|||
|- |
|||
| 三國志曹操傳 |
|||
| Big5 |
|||
| rowspan="3" | GB |
|||
| {{red|�}}T瓣в变巨肚 |
|||
| Garbled characters with almost no hint of original meaning. The red character is not a valid codepoint in {{nobreak|GB 2312}}. |
|||
|- |
|||
| 文字化けテスト |
|||
| Shift-JIS |
|||
| 暥帤壔偗僥僗僩 |
|||
| Kana is displayed as characters with the [[Radical 9|亻]] ({{zh|c=單人旁|p=dānrénpáng|links=no}}) radical, while kanji are other characters. Many of the substitute characters are extremely uncommon in modern Chinese. Somewhat easy to identify due to the presence of multiple consecutive 亻 characters. |
|||
|- |
|||
| 디제이맥스 테크니카 |
|||
| EUC-KR |
|||
| 叼力捞钙胶 抛农聪墨 |
|||
| Random [[Simplified Chinese characters|simplified characters]] which in most cases make no sense. Probably the easiest to identify because of spaces between every several characters. |
|||
|} |
|||
An additional problem in Chinese occurs when rare or antiquated characters, many of which are still used in personal or place names, do not exist in some encodings. Examples of this are: |
|||
==Example== |
|||
{| class="wikitable" |
|||
* The [[Big5]] encoding's lack of the "煊" (''xuān'') in the name of [[Taiwan]]ese politician [[Wang Chien-shien]] ({{zh|t=王建煊|p=Wáng Jiànxuān|links=no}}), the "堃" (''kūn'') in the name of [[Yu Shyi-kun]] ({{zh|t=游錫堃|s=游锡堃|p=Yóu Xíkūn|links=no}}), and the "喆" (''zhé'') in the name of singer [[David Tao]] ({{zh|t=陶喆|p=Táo Zhé|links=no}}), |
|||
|-class="hintergrundfarbe6" |
|||
* [[GB 2312]]'s lack of the "镕" (''róng'') in ex-PRC Premier [[Zhu Rongji]] ({{zh|c=朱镕基|p=Zhū Róngjī|links=no}}), and |
|||
!Output encoding!!Setting in browser!!Result |
|||
* [[GBK (character encoding)|GBK]]'s lack of the [[copyright symbol|copyright symbol "©"]].<ref>{{cite web |url=http://www.microsoft.com/typography/unicode/936.txt |archive-url=https://web.archive.org/web/20021001194325/http://www.microsoft.com/typography/unicode/936.txt |title=PRC GBK (XGB) |website=[[Microsoft]] |archive-date=2002-10-01 |url-status=dead}} Conversion map between [[Code page 936 (Microsoft Windows)|Code page 936]] and Unicode. Need manually selecting [[GB 18030]] or GBK in browser to view it correctly.</ref> |
|||
Newspapers have dealt with missing characters in various ways, including using image editing software to synthesize them by combining other radicals and characters; using a picture of the personalities (in the case of people's names), or simply substituting homophones in the hope that readers would be able to make the correct inference. |
|||
====Indic text==== |
|||
A similar effect can occur in [[Brahmic scripts|Brahmic or Indic scripts]] of [[South Asia]], used in such [[Indo-Aryan languages|Indo-Aryan or Indic languages]] as [[Hindustani language|Hindustani]] (Hindi-Urdu), [[Bengali language|Bengali]], [[Punjabi language|Punjabi]], [[Marathi language|Marathi]], and others, even if the character set employed is properly recognized by the application. This is because, in many Indic scripts, the rules by which individual letter symbols combine to create symbols for syllables may not be properly understood by a computer missing the appropriate software, even if the glyphs for the individual letter forms are available. |
|||
One example of this is the old [[Wikipedia logo]], which attempts to show the character analogous to "wi" (the first syllable of "Wikipedia") on each of many puzzle pieces. The puzzle piece meant to bear the [[Devanagari]] character for "wi" instead used to display the "wa" character followed by an unpaired "i" [[diacritic|modifier]] vowel, easily recognizable as mojibake generated by a computer not configured to display Indic text.<ref name="NYTimes">{{Cite news|title=Some Errors Defy Fixes: A Typo in Wikipedia's Logo Fractures the Sanskrit|last=Cohen|first=Noam|url=https://www.nytimes.com/2007/06/25/technology/25wikipedia.html?_r=2&oref=slogin|date=June 25, 2007|access-date=July 17, 2009|work=The New York Times}}</ref> The logo as redesigned {{as of|2010|05|lc=y|url=http://en.wikipedia.org/wiki/Logo_of_Wikipedia#Current_logo}} has fixed these errors. |
|||
The idea of Plain Text requires the operating system to provide a font to display Unicode codes. This font is different from OS to OS for Singhala and it makes orthographically incorrect glyphs for some letters (syllables) across all operating systems. For instance, the 'reph', the short form for 'r' is a diacritic that normally goes on top of a plain letter. However, it is wrong to go on top of some letters like 'ya' or 'la' in specific contexts. For Sanskritic words or names inherited by modern languages, such as कार्य, IAST: ''kārya'', or आर्या, IAST: ''āryā'', it is apt to put it on top of these letters. By contrast, for similar sounds in modern languages which result from their specific rules, it is not put on top, such as the word करणाऱ्या, IAST: ''karaṇāryā'', a stem form of the common word करणारा/री, IAST: ''karaṇārā/rī'', in the [[Marathi language]].<ref>{{Cite web |title=Marathi Typing {{!}} English to Marathi {{!}} Online Marathi Typing |url=https://marathi.indiatyping.com/ |access-date=2022-08-02 |website=marathi.indiatyping.com}}</ref> But it happens in most operating systems. This appears to be a fault of internal programming of the fonts. In Mac OS and iOS, the muurdhaja l (dark l) and 'u' combination and its long form both yield wrong shapes.{{citation needed|date=December 2020}} |
|||
Some Indic and Indic-derived scripts, most notably [[Lao script|Lao]], were not officially supported by [[Windows XP]] until the release of [[Windows Vista|Vista]].<ref>{{cite web|url=http://msdn.microsoft.com/en-us/library/ms776260(VS.85).aspx |title=Content Moved (Windows) |publisher=Msdn.microsoft.com |access-date=2014-02-05}}</ref> However, various sites have made free-to-download fonts. |
|||
====Burmese==== |
|||
Due to Western sanctions<ref name="japantimes">{{Cite web| title = Unicode in, Zawgyi out: Modernity finally catches up in Myanmar's digital world| work = The Japan Times| date = 27 September 2019| access-date = 24 December 2019| url = https://www.japantimes.co.jp/news/2019/09/27/business/tech/unicode-in-zawgyi-out-myanmar/| quote = Oct. 1 is “U-Day", when Myanmar officially will adopt the new system.... Microsoft and Apple helped other countries standardize years ago, but Western sanctions meant Myanmar lost out.| archive-date = 30 September 2019| archive-url = https://web.archive.org/web/20190930200403/https://www.japantimes.co.jp/news/2019/09/27/business/tech/unicode-in-zawgyi-out-myanmar/| url-status = dead}}</ref> and the late arrival of Burmese language support in computers,<ref name="griffin">{{Cite web| title = Battle of the fonts| last = Hotchkiss| first = Griffin| work = Frontier Myanmar| date = March 23, 2016 | access-date = 24 December 2019| url = https://frontiermyanmar.net/en/features/battle-of-the-fonts| quote = With the release of Windows XP service pack 2, complex scripts were supported, which made it possible for Windows to render a Unicode-compliant Burmese font such as Myanmar1 (released in 2005). ... Myazedi, BIT, and later Zawgyi, circumscribed the rendering problem by adding extra code points that were reserved for Myanmar’s ethnic languages. Not only does the re-mapping prevent future ethnic language support, it also results in a typing system that can be confusing and inefficient, even for experienced users. ... Huawei and Samsung, the two most popular smartphone brands in Myanmar, are motivated only by capturing the largest market share, which means they support Zawgyi out of the box.}}</ref><ref name="sin" /> much of the early Burmese localization was homegrown without international cooperation. The prevailing means of Burmese support is via the [[Zawgyi font]], a font that was created as a [[Unicode font]] but was in fact only partially Unicode compliant.<ref name="sin">{{Cite web| title = Unified under one font system as Myanmar prepares to migrate from Zawgyi to Unicode| first = Thant| last = Sin| work = Rising Voices| date = 7 September 2019| access-date = 24 December 2019| url = https://rising.globalvoices.org/blog/2019/09/06/unified-under-one-font-system-as-myanmar-prepares-to-migrate-from-zawgyi-to-unicode/| quote = Standard Myanmar Unicode fonts were never mainstreamed unlike the private and partially Unicode compliant Zawgyi font. ... Unicode will improve natural language processing}}</ref> In the Zawgyi font, some [[codepoint]]s for Burmese script were implemented as specified in [[Unicode]], but others were not.<ref>{{cite web|url=https://code.google.com/p/zawgyi/wiki/WhyUnicode|title=Why Unicode is Needed|work=Google Code: Zawgyi Project|access-date=31 October 2013}}</ref> The Unicode Consortium refers to this as ''ad hoc font encodings''.<ref name="unicode_faq">{{Cite web| title = Myanmar Scripts and Languages| work = Frequently Asked Questions| publisher = Unicode Consortium| access-date = 24 December 2019| url = https://www.unicode.org/faq/myanmar.html| quote = "UTF-8" technically does not apply to ad hoc font encodings such as Zawgyi.}}</ref> With the advent of mobile phones, mobile vendors such as Samsung and Huawei simply replaced the Unicode compliant system fonts with Zawgyi versions.<ref name="griffin"/> |
|||
Due to these ''ad hoc'' encodings, communications between users of Zawgyi and Unicode would render as garbled text. To get around this issue, content producers would make posts in both Zawgyi and Unicode.<ref name="fb_eng">{{Cite web| title = Integrating autoconversion: Facebook's path from Zawgyi to Unicode - Facebook Engineering| first1 = Nick| last1 = LaGrow| first2 = Miri| last2 = Pruzan| work = Facebook Engineering| publisher = Facebook | date = September 26, 2019| access-date = 25 December 2019| url = https://engineering.fb.com/android/unicode-font-converter/| quote = It makes communication on digital platforms difficult, as content written in Unicode appears garbled to Zawgyi users and vice versa. ... In order to better reach their audiences, content producers in Myanmar often post in both Zawgyi and Unicode in a single post, not to mention English or other languages. }}</ref> Myanmar government designated 1 October 2019 as "U-Day" to officially switch to Unicode.<ref name="japantimes" /> The full transition was estimated to take two years.<ref name="mmti_Myan">{{Cite web| title = Myanmar switch to Unicode to take two years: app developer| author = Saw Yi Nanda| work = The Myanmar Times| date = 21 November 2019| access-date = 24 December 2019| url = https://www.mmtimes.com/news/myanmar-switch-unicode-take-two-years-app-developer.html| archive-date = 24 December 2019| archive-url = https://web.archive.org/web/20191224084815/https://www.mmtimes.com/news/myanmar-switch-unicode-take-two-years-app-developer.html| url-status = dead}}</ref> |
|||
===African languages=== |
|||
In certain [[writing systems of Africa]], unencoded text is unreadable. Texts that may produce mojibake include those from the [[Horn of Africa]] such as the [[Ge'ez script]] in [[Ethiopia]] and [[Eritrea]], used for [[Amharic]], [[Tigre language|Tigre]], and other languages, and the [[Somali language]], which employs the [[Osmanya alphabet]]. In [[Southern Africa]], the [[Mwangwego alphabet]] is used to write languages of [[Malawi]] and the [[Mandombe alphabet]] was created for the [[Democratic Republic of the Congo]], but these are not generally supported. Various other writing systems native to [[West Africa]] present similar problems, such as the [[N'Ko alphabet]], used for [[Manding languages]] in [[Guinea]], and the [[Vai syllabary]], used in [[Liberia]]. |
|||
===Arabic=== |
|||
Another affected language is [[Arabic language|Arabic]] (see [[#Examples|below]]), in which text becomes completely unreadable when the encodings do not match. |
|||
====Examples==== |
|||
{| class="wikitable" style="text-align: center;" |
|||
|- class="hintergrundfarbe6" |
|||
! Arabic example !! Browser rendering || Source encoding !! Target encoding !! Result |
|||
|- |
|- |
||
| rowspan="16" | [[File:Arabic example.svg|140px|class=skin-invert-image]]<br />([[Universal Declaration of Human Rights]]) |
|||
!colspan="2" style="text-align:center"| Arabic example: |
|||
|[[File:Arabic example.png|link=|alt=]] |
|||
|- |
|- |
||
| rowspan="15" | {{Lang|ar|الإعلان العالمى لحقوق الإنسان}} |
|||
!colspan="2" style="text-align:center"| Browser rendering: |
|||
|{{Lang|ar|الإعلان العالمى لحقوق الإنسان}} |
|||
|- |
|- |
||
!rowspan=" |
! rowspan="11" | [[UTF-8]] || [[KOI8-R]] |
||
| {{not a typo|ь╖ы└ь╔ь╧ы└ь╖ы├ ь╖ы└ь╧ь╖ы└ы┘ы┴ ы└ь╜ы┌ы┬ы┌ ь╖ы└ь╔ы├ьЁь╖ы├}} |
|||
| الإعلان العالمى Ù„Øقوق الإنسان |
|||
|- |
|- |
||
! [[ |
! [[Windows-1250]] |
||
| {{not a typo|الإعلان العالمى Ů„Ř­Ů‚ŮŮ‚ الإنسان}} |
|||
| О╩©ь╖ы└ь╔ь╧ы└ь╖ы├ ь╖ы└ь╧ь╖ы└ы┘ы┴ ы└ь╜ы┌ы┬ы┌ ь╖ы└ь╔ы├ьЁь╖ы├ |
|||
|- |
|- |
||
! [[ |
! [[Windows-1251]] |
||
| {{not a typo|Ш§Щ„ШҐШ№Щ„Ш§Щ† Ш§Щ„Ш№Ш§Щ„Щ…Щ‰ Щ„Ш­Щ‚Щ€Щ‚ Ш§Щ„ШҐЩ†ШіШ§Щ†}} |
|||
| яЛПиЇй�иЅиЙй�иЇй� иЇй�иЙиЇй�й�й� й�ий�й�й� иЇй�иЅй�иГиЇй� |
|||
|- |
|- |
||
! [[ |
! [[Windows-1252]] |
||
| {{not a typo|الإعلان العالمى لحقوق الإنسان}} |
|||
| я╗┐╪з┘Д╪е╪╣┘Д╪з┘Ж ╪з┘Д╪╣╪з┘Д┘Е┘Й ┘Д╪н┘В┘И┘В ╪з┘Д╪е┘Ж╪│╪з┘Ж |
|||
|- |
|||
! [[Windows-1256]] |
|||
|{{not a typo| ط§ظ„ط¥ط¹ظ„ط§ظ† ط§ظ„ط¹ط§ظ„ظ…ظ‰ ظ„ط­ظ‚ظˆظ‚ ط§ظ„ط¥ظ†ط³ط§ظ†}} |
|||
|- |
|||
! [[ISO 8859-5]] |
|||
| {{not a typo|иЇй�иЅиЙй�иЇй� иЇй�иЙиЇй�й�й� й�ий�й�й� иЇй�иЅй�иГиЇй�}} |
|||
|- |
|- |
||
! [[ISO 8859-6]] |
! [[ISO 8859-6]] |
||
| {{not a typo| ظ�عظ�ظ�عظ�ع ظ�عظ�ظ�عع
ع عظععع ظ�عظ�عظ�ظ�ع }} |
|||
| ُ؛؟ظ�ع�ظ�ظ�ع�ظ�ع� ظ�ع�ظ�ظ�ع�ع�ع� ع�ظع�ع�ع� ظ�ع�ظ�ع�ظ�ظ�ع� |
|||
|- |
|||
! [[CP 852]] |
! [[CP 852]] |
||
| {{not a typo|ěž┘äěąě╣┘äěž┘ć ěž┘äě╣ěž┘ä┘ů┘ë ┘äěş┘é┘ł┘é ěž┘äěą┘ćě│ěž┘ć}} |
|||
|--> |
|||
|- |
|- |
||
! [[ |
! [[CP 866]] |
||
| {{not a typo|╪з┘Д╪е╪╣┘Д╪з┘Ж ╪з┘Д╪╣╪з┘Д┘Е┘Й ┘Д╪н┘В┘И┘В ╪з┘Д╪е┘Ж╪│╪з┘Ж}} |
|||
| اŮ�ŘĽŘšŮ�اŮ� اŮ�ؚاŮ�Ů�Ů� Ů�ŘŮ�Ů�Ů� اŮ�ŘĽŮ�ساŮ� |
|||
|- |
|||
! [[ |
! [[Mac Arabic]] |
||
| {{not a typo|ظ'عÑظ٪ظ٩عÑظ'عÜ ظ'عÑظ٩ظ'عÑعÖعâ عÑظ-عÇعàعÇ ظ'عÑظ٪عÜظ٣ظ'عÜ}} |
|||
<!-- all these samples, as Incnis Mrsi concluded, were made of UTF-8 Arabic. why there are no other recoding paths? --> |
|||
|- |
|||
! rowspan="3" | [[Mac Roman]] |
|||
| {{not a typo|الإعلان العالمى لحقوق الإنسان}} |
|||
|- |
|||
! [[Mac Arabic]] |
|||
| {{not a typo|«‰≈Ÿ‰«Ê†«‰Ÿ«‰ÂȆ‰Õ‚Ë‚†«‰≈Ê”«Ê}} |
|||
|- |
|||
! rowspan="2" | [[Windows-1256]] |
|||
| {{not a typo|«·≈⁄·«‰ «·⁄«·„Ï ·ÕfiÊfi «·≈‰”«‰}} |
|||
|- |
|||
! [[Windows-1252]] |
|||
| {{not a typo|ÇáÅÚáÇä ÇáÚÇáãì áÍÞæÞ ÇáÅäÓÇä}} |
|||
|} |
|} |
||
The examples in this article do not have UTF-8 as browser setting, because UTF-8 is easily recognisable, so if a browser supports UTF-8 it should recognise it automatically, and not try to interpret something else as UTF-8. |
|||
==See also== |
|||
* [[Code point]] |
|||
* [[Replacement character]] |
|||
* [[Substitute character]] |
|||
* [[Newline]] – The conventions for representing the line break differ between Windows and Unix systems. Though most software supports both conventions (which is trivial), software that must preserve or display the difference (e.g. [[version control system]]s and [[data comparison]] tools) can get substantially more difficult to use if not adhering to one convention. |
|||
* [[Byte order mark]] – The most [[in-band]] way to store the encoding together with the data – prepend it. This is by intention invisible to humans using compliant software, but will by design be perceived as "garbage characters" to incompliant software (including many [[Interpreter (computing)|interpreters]]). |
|||
* [[Character encodings in HTML|HTML entities]] – An encoding of special characters in HTML, mostly optional, but required for certain characters to [[Escape sequence|escape]] interpretation as markup. While failure to apply this transformation is a vulnerability (see [[cross-site scripting]]), applying it too many times results in garbling of these characters. For example, the quotation mark <code>"</code> becomes <code>&quot;</code>, <code>&amp;quot;</code>, <code>&amp;amp;quot;</code> and so on. |
|||
* [[Bush hid the facts]] |
|||
==References== |
==References== |
||
Line 144: | Line 460: | ||
==External links== |
==External links== |
||
{{Wiktionary}} |
* {{Wiktionary inline}} |
||
{{Commons category|Mojibake}} |
* {{Commons category-inline|Mojibake}} |
||
* [http://www.denbushi.net/2003/02/28/avoiding-mojibake/ Reprinted article from the Japan Times] |
|||
* [http://coldfusion.sys-con.com/read/44480.htm Coldfusion Developers Guide article] |
|||
* [http://www.gibberish.co.il/ Online decoder of Hebrew text] – Online decoder converts input into readable Hebrew text |
|||
* [http://www.fumizuki.com/mojibake.html Translators guide] |
|||
* [http://www.kanzaki.com/docs/jis-recover.html Recovery tool] – Recovery of Japanese text {{ja icon}} |
|||
* [http://www.mandarintools.com/email.html Chinese E-mail Fixer] – Recovery of Chinese text |
|||
* [http://www.mandarintools.com/zhcode.html Chinese Encoding Converter] - Convert file encoding of text files |
|||
* [http://decodr.ru/ Decodr.ru] - Fast Cyrillic decoder of e-mail and charsets |
|||
* [http://2cyr.com/decode/ Universal Cyrillic decoder] – Recovery of Cyrillic (and other) text |
|||
* [http://www.online-decoder.com/ Multilingual online text decoder] – Online decoder converts scrambled input into readable text. Supported languages are Russian, Bulgarian, Greek, Hebrew and Thai. |
|||
* [http://esperanto.pt/cx_tab.htm ''Noto pri ĉapeloj: Resuma tabelo''] – Covers most cases of Esperanto mojibake. |
|||
* [http://www.cbootle.com/erk/erk.html Encoding Repair Kit] – Fixes mojibake, originally intended for Japanese. Windows freeware, 1998. Not compatible with Windows Vista or 7. |
|||
* [http://krzaki.blizinski.pl/ Krzaki krzaki krzaki] - Online decoder for Polish mojibake cases. |
|||
{{Character encoding}} |
{{Character encoding}} |
||
[[Category:Japanese words and phrases]] |
|||
[[Category:Character encoding]] |
[[Category:Character encoding]] |
||
[[Category:Computer errors]] |
[[Category:Computer errors]] |
Latest revision as of 17:56, 19 December 2024
This article needs additional citations for verification. (March 2023) |
Mojibake (Japanese: 文字化け; IPA: [mod͡ʑibake], 'character transformation') is the garbled or gibberish text that is the result of text being decoded using an unintended character encoding.[1] The result is a systematic replacement of symbols with completely unrelated ones, often from a different writing system.
This display may include the generic replacement character ⟨�⟩ in places where the binary representation is considered invalid. A replacement can also involve multiple consecutive symbols, as viewed in one encoding, when the same binary code constitutes one symbol in the other encoding. This is either because of differing constant length encoding (as in Asian 16-bit encodings vs European 8-bit encodings), or the use of variable length encodings (notably UTF-8 and UTF-16).
Failed rendering of glyphs due to either missing fonts or missing glyphs in a font is a different issue that is not to be confused with mojibake. Symptoms of this failed rendering include blocks with the code point displayed in hexadecimal or using the generic replacement character. Importantly, these replacements are valid and are the result of correct error handling by the software.
Causes
[edit]To correctly reproduce the original text that was encoded, the correspondence between the encoded data and the notion of its encoding must be preserved (i.e. the source and target encoding standards must be the same). As mojibake is the instance of non-compliance between these, it can be achieved by manipulating the data itself, or just relabelling it.
Mojibake is often seen with text data that have been tagged with a wrong encoding; it may not even be tagged at all, but moved between computers with different default encodings. A major source of trouble are communication protocols that rely on settings on each computer rather than sending or storing metadata together with the data.
The differing default settings between computers are in part due to differing deployments of Unicode among operating system families, and partly the legacy encodings' specializations for different writing systems of human languages. Whereas Linux distributions mostly switched to UTF-8 in 2004,[2] Microsoft Windows generally uses UTF-16, and sometimes uses 8-bit code pages for text files in different languages.
For some writing systems, such as Japanese, several encodings have historically been employed, causing users to see mojibake relatively often. As an example, the word mojibake itself ("文字化け") stored as EUC-JP might be incorrectly displayed as "ハクサ�ス、ア", "ハクサ嵂ス、ア" (MS-932), or "ハクサ郾ス、ア" if interpreted as Shift-JIS, or as "ʸ»ú²½¤±" in software that assumes text to be in the Windows-1252 or ISO 8859-1 encodings, usually labelled Western or Western European. This is further exacerbated if other locales are involved: the same text stored as UTF-8 appears as "譁�蟄怜喧縺�" if interpreted as Shift-JIS, as "æ–‡å—化ã‘" if interpreted as Western, or (for example) as "鏂囧瓧鍖栥亼" if interpreted as being in a GBK (Mainland China) locale.
Original text | 文 | 字 | 化 | け | ||||||||||||||||||||
---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|
Raw bytes of EUC-JP encoding | CA | B8 | BB | FA | B2 | BD | A4 | B1 | ||||||||||||||||
EUC-JP bytes interpreted as Shift-JIS | ハ | ク | サ | 郾 | ス | 、 | ア | |||||||||||||||||
EUC-JP bytes interpreted as GBK | 矢 | 机 | 步 | け | ||||||||||||||||||||
EUC-JP bytes interpreted as Windows-1252 | Ê | ¸ | » | ú | ² | ½ | ¤ | ± | ||||||||||||||||
Raw bytes of UTF-8 encoding | E6 | 96 | 87 | E5 | AD | 97 | E5 | 8C | 96 | E3 | 81 | 91 | ||||||||||||
UTF-8 bytes interpreted as Shift-JIS | 譁 | � | 蟄 | 怜 | 喧 | 縺 | � | |||||||||||||||||
UTF-8 bytes interpreted as GBK | 鏂 | 囧 | 瓧 | 鍖 | 栥 | 亼 | ||||||||||||||||||
UTF-8 bytes interpreted as Windows-1252 | æ | – | ‡ | å | SHY | — | å | Œ | – | ã | HOP | ‘ |
Underspecification
[edit]If the encoding is not specified, it is up to the software to decide it by other means. Depending on the type of software, the typical solution is either configuration or charset detection heuristics, both of which are prone to mis-prediction.
The encoding of text files is affected by locale setting, which depends on the user's language and brand of operating system, among other conditions. Therefore, the assumed encoding is systematically wrong for files that come from a computer with a different setting, or even from a differently localized piece of software within the same system. For Unicode, one solution is to use a byte order mark, but many parsers do not tolerate this for source code or other machine-readable text. Another solution is to store the encoding as metadata in the file system; file systems that support extended file attributes can store this as user.charset
.[3] This also requires support in software that wants to take advantage of it, but does not disturb other software.
While some encodings are easy to detect, such as UTF-8, there are many that are hard to distinguish (see charset detection). For example, a web browser may not be able to distinguish between a page coded in EUC-JP and another in Shift-JIS if the encoding is not assigned explicitly using HTTP headers sent along with the documents, or using the document's meta tags that are used to substitute for missing HTTP headers if the server cannot be configured to send the proper HTTP headers; see character encodings in HTML.
Mis-specification
[edit]Mojibake also occurs when the encoding is incorrectly specified. This often happens between encodings that are similar. For example, the Eudora email client for Windows was known to send emails labelled as ISO 8859-1 that were in reality Windows-1252.[4] Windows-1252 contains extra printable characters in the C1 range (the most frequently seen being curved quotation marks and extra dashes), that were not displayed properly in software complying with the ISO standard; this especially affected software running under other operating systems such as Unix.
User oversight
[edit]Of the encodings still in common use, many originated from taking ASCII and appending atop it; as a result, these encodings are partially compatible with each other. Examples of this include Windows-1252 and ISO 8859-1. People thus may mistake the expanded encoding set they are using with plain ASCII.
Overspecification
[edit]When there are layers of protocols, each trying to specify the encoding based on different information, the least certain information may be misleading to the recipient. For example, consider a web server serving a static HTML file over HTTP. The character set may be communicated to the client in any number of 3 ways:
- in the HTTP header. This information can be based on server configuration (for instance, when serving a file off disk) or controlled by the application running on the server (for dynamic websites).
- in the file, as an HTML meta tag (
http-equiv
orcharset
) or theencoding
attribute of an XML declaration. This is the encoding that the author meant to save the particular file in. - in the file, as a byte order mark. This is the encoding that the author's editor actually saved it in. Unless an accidental encoding conversion has happened (by opening it in one encoding and saving it in another), this will be correct. It is, however, only available in Unicode encodings such as UTF-8 or UTF-16.
Lack of hardware or software support
[edit]Much older hardware is typically designed to support only one character set and the character set typically cannot be altered. The character table contained within the display firmware will be localized to have characters for the country the device is to be sold in, and typically the table differs from country to country. As such, these systems will potentially display mojibake when loading text generated on a system from a different country. Likewise, many early operating systems do not support multiple encoding formats and thus will end up displaying mojibake if made to display non-standard text—early versions of Microsoft Windows and Palm OS for example, are localized on a per-country basis and will only support encoding standards relevant to the country the localized version will be sold in, and will display mojibake if a file containing a text in a different encoding format from the version that the OS is designed to support is opened.
Resolutions
[edit]Applications using UTF-8 as a default encoding may achieve a greater degree of interoperability because of its widespread use and backward compatibility with US-ASCII. UTF-8 also has the ability to be directly recognised by a simple algorithm, so that well written software should be able to avoid mixing UTF-8 up with other encodings.
The difficulty of resolving an instance of mojibake varies depending on the application within which it occurs and the causes of it. Two of the most common applications in which mojibake may occur are web browsers and word processors. Modern browsers and word processors often support a wide array of character encodings. Browsers often allow a user to change their rendering engine's encoding setting on the fly, while word processors allow the user to select the appropriate encoding when opening a file. It may take some trial and error for users to find the correct encoding.
The problem gets more complicated when it occurs in an application that normally does not support a wide range of character encoding, such as in a non-Unicode computer game. In this case, the user must change the operating system's encoding settings to match that of the game. However, changing the system-wide encoding settings can also cause Mojibake in pre-existing applications. In Windows XP or later, a user also has the option to use Microsoft AppLocale, an application that allows the changing of per-application locale settings. Even so, changing the operating system encoding settings is not possible on earlier operating systems such as Windows 98; to resolve this issue on earlier operating systems, a user would have to use third party font rendering applications.
Problems in different writing systems
[edit]English
[edit]Mojibake in English texts generally occurs in punctuation, such as em dashes (—), en dashes (–), and curly quotes (“, ”, ‘, ’), but rarely in character text, since most encodings agree with ASCII on the encoding of the English alphabet. For example, the pound sign £
will appear as £
if it was encoded by the sender as UTF-8 but interpreted by the recipient as one of the Western European encodings (CP1252 or ISO 8859-1). If iterated using CP1252, this can lead to £
, £
, £
, £
, and so on.
Similarly, the right single quotation mark (’), when encoded in UTF-8 and decoded using Windows-1252, becomes ’
, ’
, ’
, and so on.
In older eras, some computers had vendor-specific encodings which caused mismatch also for English text. Commodore brand 8-bit computers used PETSCII encoding, particularly notable for inverting the upper and lower case compared to standard ASCII. PETSCII printers worked fine on other computers of the era, but inverted the case of all letters. IBM mainframes use the EBCDIC encoding which does not match ASCII at all.
Other Western European languages
[edit]The alphabets of the North Germanic languages, Catalan, Romanian, Finnish, French, German, Italian, Portuguese and Spanish are all extensions of the Latin alphabet. The additional characters are typically the ones that become corrupted, making texts only mildly unreadable with mojibake:
- å, ä, ö in Finnish and Swedish (š and ž are present in some Finnish loanwords, é marginally in Swedish, mainly also in loanwords)
- à, ç, è, é, ï, í, ò, ó, ú, ü in Catalan
- æ, ø, å in Norwegian and Danish as well as optional acute accents on é etc for disambiguation
- á, é, ó, ij, è, ë, ï in Dutch
- ä, ö, ü, and ß in German
- á, ð, í, ó, ú, ý, æ, ø in Faroese
- á, ð, é, í, ó, ú, ý, þ, æ, ö in Icelandic
- à, â, ç, è, é, ë, ê, ï, î, ô, ù, û, ü, ÿ, æ, œ in French
- à, è, é, ì, ò, ù in Italian
- á, é, í, ñ, ó, ú, ü, ¡, ¿ in Spanish
- à, á, â, ã, ç, é, ê, í, ó, ô, õ, ú in Portuguese (ü no longer used)
- á, é, í, ó, ú in Irish
- à, è, ì, ò, ù in Scottish Gaelic
- ă, â, î, ș, ț in Romanian
- £ in British English (æ and œ are rarely used)
... and their uppercase counterparts, if applicable.
These are languages for which the ISO 8859-1 character set (also known as Latin 1 or Western) has been in use. However, ISO 8859-1 has been obsoleted by two competing standards, the backward compatible Windows-1252, and the slightly altered ISO 8859-15. Both add the Euro sign € and the French œ, but otherwise any confusion of these three character sets does not create mojibake in these languages. Furthermore, it is always safe to interpret ISO 8859-1 as Windows-1252, and fairly safe to interpret it as ISO 8859-15, in particular with respect to the Euro sign, which replaces the rarely used currency sign (¤). However, with the advent of UTF-8, mojibake has become more common in certain scenarios, e.g. exchange of text files between UNIX and Windows computers, due to UTF-8's incompatibility with Latin-1 and Windows-1252. But UTF-8 has the ability to be directly recognised by a simple algorithm, so that well written software should be able to avoid mixing UTF-8 up with other encodings, so this was most common when many had software not supporting UTF-8. Most of these languages were supported by MS-DOS default CP437 and other machine default encodings, except ASCII, so problems when buying an operating system version were less common. Windows and MS-DOS are not compatible, however.
In Swedish, Norwegian, Danish and German, vowels are rarely repeated, and it is usually obvious when one character gets corrupted, e.g. the second letter in the Swedish word kärlek ("love") when it is encoded in UTF-8 but decoded in Western, producing "kärlek", or für in German, which becomes "für". This way, even though the reader has to guess what the original letter is, almost all texts remain legible. Finnish, on the other hand, frequently uses repeating vowels in words like hääyö ("wedding night") which can make corrupted text very hard to read (e.g. hääyö appears as "hääyö"). Icelandic has ten possibly confounding characters, and Faroese has eight, making many words almost completely unintelligible when corrupted (e.g. Icelandic þjóðlöð, "outstanding hospitality", appears as "þjóðlöð").
In German, Buchstabensalat ("letter salad") is a common term for this phenomenon, in Spanish, deformación (literally "deformation") is used, and in Portuguese, desformatação (literally "deformatting") is used.
Some users transliterate their writing when using a computer, either by omitting the problematic diacritics, or by using digraph replacements (å → aa, ä/æ → ae, ö/ø → oe, ü → ue etc.). Thus, an author might write "ueber" instead of "über", which is standard practice in German when umlauts are not available. The latter practice seems to be better tolerated in the German language sphere than in the Nordic countries. For example, in Norwegian, digraphs are associated with archaic Danish, and may be used jokingly. However, digraphs are useful in communication with other parts of the world. As an example, the Norwegian football player Ole Gunnar Solskjær had his last name spelled "SOLSKJAER" on his uniform when he played for Manchester United.
An artifact of UTF-8 misinterpreted as ISO 8859-1, "Ring meg nå" being rendered as "Ring meg nÃ¥", was seen in 2014 in an SMS scam targeting Norway.[5]
Swedish example | Source encoding | Target encoding | Result (Characters in red are incorrect.) |
---|---|---|---|
Smörgås (open sandwich) | |||
MS-DOS 437 | ISO 8859-1 | Smrgs | |
UTF-8 | Smörgås | ||
IBM/CP037 (EBCDIC) | ë_C¶ÊÅCvË | ||
Mac Roman | Smörgås | ||
ISO 8859-1 | SmˆrgÂs |
The same problem occurs also in Romanian, see these examples:
Romanian example | Source encoding | Target encoding | Result (Characters in red are incorrect.) |
---|---|---|---|
Cenușă (ash) | |||
UTF-8 | |||
ASCII | Cenușă | ||
ISO 8859-2 | CenuČÄ | ||
OEM 737 | Cenu╚β─Δ | ||
Shift-JIS | Cenuネ卞 | ||
TIS-620 | Cenuศฤ | ||
IBM/CP037 (EBCDIC) | äÁ>ÍHrDc |
Central and Eastern European
[edit]Users of Central and Eastern European languages can also be affected. Because most computers were not connected to any network during the mid- to late-1980s, there were different character encodings for every language with diacritical characters (see ISO/IEC 8859 and KOI-8), often also varying by operating system.
Hungarian
[edit]In Hungarian, the phenomenon is referred to as betűszemét, meaning "letter garbage". Hungarian has been particularly susceptible as it contains the accented letters á, é, í, ó, ú, ö, ü (all present in the Latin-1 character set), plus the two characters ő and ű which are not in Latin-1. These two characters can be correctly encoded in Latin-2, Windows-1250, and Unicode. However, before Unicode became common in e-mail clients, e-mails containing Hungarian text often had the letters ő and ű corrupted, sometimes to the point of unrecognizability. It is common to respond to a corrupted e-mail with the nonsense phrase "Árvíztűrő tükörfúrógép" (literally "Flood-resistant mirror-drilling machine") which contains all accented characters used in Hungarian.
Examples
[edit]Hungarian example | Source encoding | Target encoding | Result | Occurrence |
---|---|---|---|---|
ÁRVÍZTŰRŐ TÜKÖRFÚRÓGÉP árvíztűrő tükörfúrógép | ||||
UTF-8 Quoted-printable | 7-bit ASCII | =C3=81RV=C3=8DZT=C5=B0R=C5=90 T=C3=9CK=C3=96RF=C3=9AR=C3=93G=C3=89P =C3=A1rv=C3=ADzt=C5=B1r=C5=91 t=C3=BCk=C3=B6rf=C3=BAr=C3=B3g=C3=A9p | Mainly caused by incorrectly configured mail servers but may occur in SMS messages on some cell phones as well. | |
ISO 8859-2 Quoted-printable | =C1RV=CDZT=DBR=D5 T=DCK=D6RF=DAR=D3G=C9P =E1rv=EDzt=FBr=F5 t=FCk=F6rf=FAr=F3g=E9p | |||
CWI-2 | CP 437 | ÅRVìZTÿRº TÜKÖRFùRòGÉP árvíztûrô tükörfúrógép |
The CWI-2 encoding was designed so that Hungarian text remains fairly well-readable even if the device on the receiving end uses one of the default encodings (CP 437 or CP 850). This encoding was used very heavily between the early 1980s and early 1990s, but nowadays it is completely deprecated. | |
CP 852 | ╡RV╓ZTδRè TÜKÖRFΘRαGÉP árvízt√rï tükörfúrógép |
This was very common in the days of DOS, as the text was often encoded using code page 852 ("Central European"), but the software on the receiving end often did not support CP 852 and instead tried to display text using CP 437 or CP 850. Lowercase letters are mainly correct, except for ű and ő. Ü/ü and Ö/ö are correct because CP 437 and CP 850 were made compatible with German. Although this is rare nowadays, it can still be seen in places such as on printed prescriptions and cheques. | ||
CP 850 | ÁRVÍZTÙRè TÜKÖRFÚRÓGÉP árvízt¹rï tükörfúrógép | |||
Windows-1250 | µRVÖZTëRŠ TšK™RFéRŕGP rvˇztűr‹ tk"rfŁr˘g‚p |
Both encodings are Central European, but the text is encoded with the DOS encoding and decoded with the Windows encoding. The use of ű is correct. | ||
Mac Roman | µRV÷ZTÎRä TöKôRFÈR‡GêP †rv°zt˚rã tÅkîrf£r¢gÇp |
Also common in the days of DOS, this could be seen when Apple computers tried to display Hungarian text sent using DOS or Windows machines, as they would often default to Apple's own encoding. | ||
Windows-1250 | ¡RVÕZT€R’ T‹K÷RF⁄R”G…P ·rvÌzt˚rı t¸kˆrf˙rÛgÈp | |||
CP 852 | ┴RV═ZT█RŇ T▄KÍRF┌RËG╔P ßrvÝztűr§ tŘk÷rf˙rˇgÚp |
Both encodings are Central European, but the text is encoded with the Windows encoding and decoded with the DOS encoding. The use of ű is correct. | ||
Windows-1252 | ÁRVÍZTÛRÕ TÜKÖRFÚRÓGÉP árvíztûrõ tükörfúrógép |
The default Western European Windows encoding is used instead of the Central-European one. Only ő-Ő (õ-Õ) and ű-Ű (û-Û) are wrong, and the text is completely readable. This is the most common error nowadays; due to ignorance, it occurs often on webpages or even in printed media. | ||
UTF-8 | ÃRVÃZTÅ°RÅ TÃœKÖRFÚRÃ"GÉP árvÃztűrÅ‘ tükörfúrógép |
Mainly caused by web services or webmail clients that are configured incorrectly or not tested for international usage (as the problem remains concealed for English texts). In this case the actual (often generated) content is in UTF-8, but some older software may default to localized encodings if UTF-8 is not explicitly specified in the HTML headers. | ||
Mac Roman | ÁRVÍZTŰRŐ TÜKÖRFÚRÓGÉP árvíztűrő tükörfúrógép |
Polish
[edit]Prior to the creation of ISO 8859-2 in 1987, users of various computing platforms used their own character encodings such as AmigaPL on Amiga, Atari Club on Atari ST and Masovia, IBM CP852, Mazovia and Windows CP1250 on IBM PCs. Polish companies selling early DOS computers created their own mutually-incompatible ways to encode Polish characters and simply reprogrammed the EPROMs of the video cards (typically CGA, EGA, or Hercules) to provide hardware code pages with the needed glyphs for Polish—arbitrarily located without reference to where other computer sellers had placed them.
The situation began to improve when, after pressure from academic and user groups, ISO 8859-2 succeeded as the "Internet standard" with limited support of the dominant vendors' software (today largely replaced by Unicode). With the numerous problems caused by the variety of encodings, even today some users tend to refer to Polish diacritical characters as krzaczki ([ˈkʂät͜ʂ.ki], lit. "little shrubs").
Russian and other Cyrillic-based alphabets
[edit]Mojibake is colloquially called krakozyabry (кракозя́бры [krɐkɐˈzʲæbrɪ̈]) in Russian, which was and remains complicated by several systems for encoding Cyrillic.[6] The Soviet Union and early Russian Federation developed KOI encodings (Kod Obmena Informatsiey, Код Обмена Информацией, which translates to "Code for Information Exchange"). This began with Cyrillic-only 7-bit KOI7, based on ASCII but with Latin and some other characters replaced with Cyrillic letters. Then came 8-bit KOI8 encoding that is an ASCII extension which encodes Cyrillic letters only with high-bit set octets corresponding to 7-bit codes from KOI7. It is for this reason that KOI8 text, even Russian, remains partially readable after stripping the eighth bit, which was considered as a major advantage in the age of 8BITMIME-unaware email systems. For example, the words "Школа русского языка" (shkola russkogo yazyka), when encoded in KOI8 and passed through the high bit stripping process, end up being rendered as "[KOLA RUSSKOGO qZYKA". Eventually, KOI8 gained different flavors for Russian and Bulgarian (KOI8-R), Ukrainian (KOI8-U), Belarusian (KOI8-RU), and even Tajik (KOI8-T).
Meanwhile, in the West, Code page 866 supported Ukrainian and Belarusian, as well as Russian and Bulgarian in MS-DOS. For Microsoft Windows, Code Page 1251 added support for Serbian and other Slavic variants of Cyrillic.
Most recently, the Unicode encoding includes code points for virtually all characters in all languages, including all Cyrillic characters.
Before Unicode, it was necessary to match text encoding with a font using the same encoding system; failure to do this produced unreadable gibberish whose specific appearance varied depending on the exact combination of text and font encoding. For example, attempting to view non-Unicode Cyrillic text using a font that is limited to the Latin alphabet, or using the default ("Western") encoding, typically results in text that consists almost entirely of capitalized vowels with diacritical marks (e.g. KOI8 "Библиотека" (biblioteka, library) becomes "âÉÂÌÉÏÔÅËÁ", while "Школа русского языка" (shkola russkogo yazyka, Russian-language school) becomes "ûËÏÌÁ ÒÕÓÓËÏÇÏ ÑÚÙËÁ"). Using Code Page 1251 to view text in KOI8, or vice versa, results in garbled text that consists mostly of capital letters (KOI8 and Code Page 1251 share the same ASCII region, but KOI8 has uppercase letters in the region where Code Page 1251 has lowercase, and vice versa).
During the early years of the Russian sector of the World Wide Web, both KOI8 and Code Page 1251 were common. Nearly all websites now use Unicode, but as of November 2023,[update] an estimated 0.35% of all web pages worldwide – all languages included – are still encoded in Code Page 1251, while less than 0.003% of sites are still encoded in KOI8-R.[7][8] Though the HTML standard includes the ability to specify the encoding for any given web page in its source,[9] this is sometimes neglected, forcing the user to switch encodings in the browser manually.
In Bulgarian, mojibake is often called majmunica (маймуница), meaning "monkey's [alphabet]". In Serbian, it is called đubre (ђубре), meaning "trash". Unlike the former USSR, South Slavs never used something like KOI8, and Code Page 1251 was the dominant Cyrillic encoding before Unicode; therefore, these languages experienced fewer encoding incompatibility troubles than Russian. In the 1980s, Bulgarian computers used their own MIK encoding, which is superficially similar to (although incompatible with) CP866.
Original text | Source encoding | Target encoding | Result |
---|---|---|---|
Кракозябры | |||
Windows-1251 | KOI8-R | йПЮЙНГЪАПШ | |
KOI8-R | Windows-1251 | лТБЛПЪСВТЩ | |
Windows-1252 | ëÒÁËÏÚÑÂÒÙ | ||
MS-DOS 855 | Çá ÆÖóÞ¢áñ | ||
Windows-1251 | Êðàêîçÿáðû | ||
UTF-8 | КракозÑбры | ||
KOI8-R | п я─п╟п╨п╬п╥я▐п╠я─я▀ (The second character is a non-breaking space) | ||
MS-DOS 855 | лџЛђл░л║лЙлиЛЈл▒ЛђЛІ | ||
Windows-1251 | Кракозябры | ||
Mac Roman | –ö—Ä–∞–∫–æ–∑—è–±—Ä—ã | ||
Mac Cyrillic | –Ъ—А–∞–Ї–Њ–Ј—П–±—А—Л |
Yugoslav languages
[edit]Croatian, Bosnian, Serbian (the seceding varieties of Serbo-Croatian language) and Slovenian add to the basic Latin alphabet the letters š, đ, č, ć, ž, and their capital counterparts Š, Đ, Č, Ć, Ž (only č/Č, š/Š and ž/Ž are officially used in Slovenian, although others are used when needed, mostly in foreign names). All of these letters are defined in Latin-2 and Windows-1250, while only some (š, Š, ž, Ž, Đ) exist in the usual OS-default Windows-1252, and are there because of some other languages.
Although Mojibake can occur with any of these characters, the letters that are not included in Windows-1252 are much more prone to errors. Thus, even nowadays, "šđčćž ŠĐČĆŽ" is often displayed as "šðèæž ŠÐÈÆŽ", although ð, È, and Æ are never used in Slavic languages.
When confined to basic ASCII (most user names, for example), common replacements are: š→s, đ→dj, č→c, ć→c, ž→z (capital forms analogously, with Đ→Dj or Đ→DJ depending on word case). All of these replacements introduce ambiguities, so reconstructing the original from such a form is usually done manually if required.
The Windows-1252 encoding is important because the English versions of the Windows operating system are most widespread, not localized ones.[citation needed] The reasons for this include a relatively small and fragmented market, increasing the price of high quality localization, a high degree of software piracy (in turn caused by high price of software compared to income), which discourages localization efforts, and people preferring English versions of Windows and other software.[citation needed]
The drive to differentiate Croatian from Serbian, Bosnian from Croatian and Serbian, and now even Montenegrin from the other three creates many problems. There are many different localizations, using different standards and of different quality. There are no common translations for the vast amount of computer terminology originating in English. In the end, people use English loanwords ("kompjuter" for "computer", "kompajlirati" for "compile," etc.), and if they are unaccustomed to the translated terms, they may not understand what some option in a menu is supposed to do based on the translated phrase. Therefore, people who understand English, as well as those who are accustomed to English terminology (who are most, because English terminology is also mostly taught in schools because of these problems) regularly choose the original English versions of non-specialist software.
When Cyrillic script is used (for Macedonian and partially Serbian), the problem is similar to other Cyrillic-based scripts.
Newer versions of English Windows allow the code page to be changed (older versions require special English versions with this support), but this setting can be and often was incorrectly set. For example, Windows 98 and Windows Me can be set to most non-right-to-left single-byte code pages including 1250, but only at install time.
Caucasian languages
[edit]The writing systems of certain languages of the Caucasus region, including the scripts of Georgian and Armenian, may produce mojibake. This problem is particularly acute in the case of ArmSCII or ARMSCII, a set of obsolete character encodings for the Armenian alphabet which have been superseded by Unicode standards. ArmSCII is not widely used because of a lack of support in the computer industry. For example, Microsoft Windows does not support it.
Asian encodings
[edit]Another type of mojibake occurs when text encoded in a single-byte encoding is erroneously parsed in a multi-byte encoding, such as one of the encodings for East Asian languages. With this kind of mojibake more than one (typically two) characters are corrupted at once. For example, if the Swedish word kärlek is encoded in Windows-1252 but decoded using GBK, it will appear as "k鋜lek", where "är" is parsed as "鋜". Compared to the above mojibake, this is harder to read, since letters unrelated to the problematic å, ä or ö are missing, and is especially problematic for short words starting with å, ä or ö (e.g. "än" becomes "鋘"). Since two letters are combined, the mojibake also seems more random (over 50 variants compared to the normal three, not counting the rarer capitals). In some rare cases, an entire text string which happens to include a pattern of particular word lengths, such as the sentence "Bush hid the facts", may be misinterpreted.
Vietnamese
[edit]In Vietnamese, the phenomenon is called chữ ma (Hán–Nôm: 𡨸魔, "ghost characters") or loạn mã (from Chinese 乱码, luànmǎ). It can occur when a computer tries to decode text encoded in UTF-8 as Windows-1258, TCVN3 or VNI. In Vietnam, chữ ma was commonly seen on computers that ran pre-Vista versions of Windows or cheap mobile phones.
Example | Source encoding | Target encoding | Result |
---|---|---|---|
Trăm năm trong cõi người ta 𤾓𢆥𥪞𡎝𠊛些 (Truyện Kiều, Nguyễn Du) | |||
UTF-8 | Windows-1258 | Trăm năm trong cõi ngÆ°á»i ta đ¤¾“đ¢†¥đ¥ªđ¡đ ›äº› | |
TCVN3 | Tr¨m n¨m trong câi ngêi ta �¤¾��¢��¥¥ª��¡�����¾ä�� | ||
VNI (Windows) | Traêm naêm trong coõi ngöôøi ta ����������������������� | ||
Mac Roman | TrƒÉm nƒÉm trong c√µi ng∆∞·ªùi ta §æì¢Ü••™û°éù†äõ‰∫õ |
Japanese
[edit]In Japan, mojibake is especially problematic as there are many different Japanese text encodings. Alongside Unicode encodings (UTF-8 and UTF-16), there are other standard encodings, such as Shift-JIS (Windows machines) and EUC-JP (UNIX systems). Even to this day, mojibake is often encountered by both Japanese and non-Japanese people when attempting to run software written for the Japanese market.
Original text | Source encoding | Target encoding | Result |
---|---|---|---|
このメールは皆様へのメッセージです。 | |||
UTF-8 | |||
UTF-7 | ���̃��(�q���Y�_�C�G�b�g) | ||
EUC-JP | �����<�若������罕��吾���<���祉�若�吾�с���� | ||
Shift-JIS | 縺薙�繝。繝シ繝ォ縺ッ逧�ァ倥∈縺ョ繝。繝�そ繝シ繧ク縺ァ縺吶� | ||
Mac Roman | このメールは皆様へのメッセージです。 | ||
ISO 8859-6 | كك�ك�ك�ك�ك�هن�ك�ك�ك�كك؛ك�ك�ك�كك | ||
Windows-1252 | ã“ã®ãƒ¡ãƒ¼ãƒ«ã¯çš†æ§˜ã¸ã®ãƒ¡ãƒƒã‚»ãƒ¼ã‚¸ã§ã™ã€‚ | ||
EUC-JP | ¤³¤Î¥á¡¼¥ë¤Ï³§ÍͤؤΥá¥Ã¥»¡¼¥¸¤Ç¤¹¡£ | ||
Shift-JIS | ‚±‚̃[ƒ‹‚ÍŠF—l‚ւ̃ƒbƒZ[ƒW‚Å‚·B |
Chinese
[edit]In Chinese, the same phenomenon is called Luàn mǎ (Pinyin, Simplified Chinese 乱码, Traditional Chinese 亂碼, meaning 'chaotic code'), and can occur when computerised text is encoded in one Chinese character encoding but is displayed using the wrong encoding. When this occurs, it is often possible to fix the issue by switching the character encoding without loss of data. The situation is complicated because of the existence of several Chinese character encoding systems in use, the most common ones being: Unicode, Big5, and Guobiao (with several backward compatible versions), and the possibility of Chinese characters being encoded using Japanese encoding.
It is relatively easy to identify the original encoding when luànmǎ occurs in Guobiao encodings:
Original text | Source encoding | Target encoding | Result | Note |
---|---|---|---|---|
三國志曹操傳 | Big5 | GB | �T瓣в变巨肚 | Garbled characters with almost no hint of original meaning. The red character is not a valid codepoint in GB 2312. |
文字化けテスト | Shift-JIS | 暥帤壔偗僥僗僩 | Kana is displayed as characters with the 亻 (Chinese: 單人旁; pinyin: dānrénpáng) radical, while kanji are other characters. Many of the substitute characters are extremely uncommon in modern Chinese. Somewhat easy to identify due to the presence of multiple consecutive 亻 characters. | |
디제이맥스 테크니카 | EUC-KR | 叼力捞钙胶 抛农聪墨 | Random simplified characters which in most cases make no sense. Probably the easiest to identify because of spaces between every several characters. |
An additional problem in Chinese occurs when rare or antiquated characters, many of which are still used in personal or place names, do not exist in some encodings. Examples of this are:
- The Big5 encoding's lack of the "煊" (xuān) in the name of Taiwanese politician Wang Chien-shien (Chinese: 王建煊; pinyin: Wáng Jiànxuān), the "堃" (kūn) in the name of Yu Shyi-kun (simplified Chinese: 游锡堃; traditional Chinese: 游錫堃; pinyin: Yóu Xíkūn), and the "喆" (zhé) in the name of singer David Tao (Chinese: 陶喆; pinyin: Táo Zhé),
- GB 2312's lack of the "镕" (róng) in ex-PRC Premier Zhu Rongji (Chinese: 朱镕基; pinyin: Zhū Róngjī), and
- GBK's lack of the copyright symbol "©".[10]
Newspapers have dealt with missing characters in various ways, including using image editing software to synthesize them by combining other radicals and characters; using a picture of the personalities (in the case of people's names), or simply substituting homophones in the hope that readers would be able to make the correct inference.
Indic text
[edit]A similar effect can occur in Brahmic or Indic scripts of South Asia, used in such Indo-Aryan or Indic languages as Hindustani (Hindi-Urdu), Bengali, Punjabi, Marathi, and others, even if the character set employed is properly recognized by the application. This is because, in many Indic scripts, the rules by which individual letter symbols combine to create symbols for syllables may not be properly understood by a computer missing the appropriate software, even if the glyphs for the individual letter forms are available.
One example of this is the old Wikipedia logo, which attempts to show the character analogous to "wi" (the first syllable of "Wikipedia") on each of many puzzle pieces. The puzzle piece meant to bear the Devanagari character for "wi" instead used to display the "wa" character followed by an unpaired "i" modifier vowel, easily recognizable as mojibake generated by a computer not configured to display Indic text.[11] The logo as redesigned as of May 2010[ref] has fixed these errors.
The idea of Plain Text requires the operating system to provide a font to display Unicode codes. This font is different from OS to OS for Singhala and it makes orthographically incorrect glyphs for some letters (syllables) across all operating systems. For instance, the 'reph', the short form for 'r' is a diacritic that normally goes on top of a plain letter. However, it is wrong to go on top of some letters like 'ya' or 'la' in specific contexts. For Sanskritic words or names inherited by modern languages, such as कार्य, IAST: kārya, or आर्या, IAST: āryā, it is apt to put it on top of these letters. By contrast, for similar sounds in modern languages which result from their specific rules, it is not put on top, such as the word करणाऱ्या, IAST: karaṇāryā, a stem form of the common word करणारा/री, IAST: karaṇārā/rī, in the Marathi language.[12] But it happens in most operating systems. This appears to be a fault of internal programming of the fonts. In Mac OS and iOS, the muurdhaja l (dark l) and 'u' combination and its long form both yield wrong shapes.[citation needed]
Some Indic and Indic-derived scripts, most notably Lao, were not officially supported by Windows XP until the release of Vista.[13] However, various sites have made free-to-download fonts.
Burmese
[edit]Due to Western sanctions[14] and the late arrival of Burmese language support in computers,[15][16] much of the early Burmese localization was homegrown without international cooperation. The prevailing means of Burmese support is via the Zawgyi font, a font that was created as a Unicode font but was in fact only partially Unicode compliant.[16] In the Zawgyi font, some codepoints for Burmese script were implemented as specified in Unicode, but others were not.[17] The Unicode Consortium refers to this as ad hoc font encodings.[18] With the advent of mobile phones, mobile vendors such as Samsung and Huawei simply replaced the Unicode compliant system fonts with Zawgyi versions.[15]
Due to these ad hoc encodings, communications between users of Zawgyi and Unicode would render as garbled text. To get around this issue, content producers would make posts in both Zawgyi and Unicode.[19] Myanmar government designated 1 October 2019 as "U-Day" to officially switch to Unicode.[14] The full transition was estimated to take two years.[20]
African languages
[edit]In certain writing systems of Africa, unencoded text is unreadable. Texts that may produce mojibake include those from the Horn of Africa such as the Ge'ez script in Ethiopia and Eritrea, used for Amharic, Tigre, and other languages, and the Somali language, which employs the Osmanya alphabet. In Southern Africa, the Mwangwego alphabet is used to write languages of Malawi and the Mandombe alphabet was created for the Democratic Republic of the Congo, but these are not generally supported. Various other writing systems native to West Africa present similar problems, such as the N'Ko alphabet, used for Manding languages in Guinea, and the Vai syllabary, used in Liberia.
Arabic
[edit]Another affected language is Arabic (see below), in which text becomes completely unreadable when the encodings do not match.
Examples
[edit]Arabic example | Browser rendering | Source encoding | Target encoding | Result |
---|---|---|---|---|
(Universal Declaration of Human Rights) | ||||
الإعلان العالمى لحقوق الإنسان | ||||
UTF-8 | KOI8-R | ь╖ы└ь╔ь╧ы└ь╖ы├ ь╖ы└ь╧ь╖ы└ы┘ы┴ ы└ь╜ы┌ы┬ы┌ ь╖ы└ь╔ы├ьЁь╖ы├ | ||
Windows-1250 | الإعلان العالمى Ů„ŘŮ‚ŮŮ‚ الإنسان | |||
Windows-1251 | Ш§Щ„ШҐШ№Щ„Ш§Щ† Ш§Щ„Ш№Ш§Щ„Щ…Щ‰ Щ„ШЩ‚Щ€Щ‚ Ш§Щ„ШҐЩ†ШіШ§Щ† | |||
Windows-1252 | الإعلان العالمى Ù„Øقوق الإنسان | |||
Windows-1256 | ط§ظ„ط¥ط¹ظ„ط§ظ† ط§ظ„ط¹ط§ظ„ظ…ظ‰ ظ„طظ‚ظˆظ‚ ط§ظ„ط¥ظ†ط³ط§ظ† | |||
ISO 8859-5 | иЇй�иЅиЙй�иЇй� иЇй�иЙиЇй�й�й� й�ий�й�й� иЇй�иЅй�иГиЇй� | |||
ISO 8859-6 | ظ�عظ�ظ�عظ�ع ظ�عظ�ظ�عع ع عظععع ظ�عظ�عظ�ظ�ع | |||
CP 852 | ěž┘äěąě╣┘äěž┘ć ěž┘äě╣ěž┘ä┘ů┘ë ┘äěş┘é┘ł┘é ěž┘äěą┘ćě│ěž┘ć | |||
CP 866 | ╪з┘Д╪е╪╣┘Д╪з┘Ж ╪з┘Д╪╣╪з┘Д┘Е┘Й ┘Д╪н┘В┘И┘В ╪з┘Д╪е┘Ж╪│╪з┘Ж | |||
Mac Arabic | ظ'عÑظ٪ظ٩عÑظ'عÜ ظ'عÑظ٩ظ'عÑعÖعâ عÑظ-عÇعàعÇ ظ'عÑظ٪عÜظ٣ظ'عÜ | |||
Mac Roman | الإعلان العالمى لحقوق الإنسان | |||
Mac Arabic | «‰≈Ÿ‰«Ê†«‰Ÿ«‰ÂȆ‰Õ‚Ë‚†«‰≈Ê”«Ê | |||
Windows-1256 | «·≈⁄·«‰ «·⁄«·„Ï ·ÕfiÊfi «·≈‰”«‰ | |||
Windows-1252 | ÇáÅÚáÇä ÇáÚÇáãì áÍÞæÞ ÇáÅäÓÇä |
The examples in this article do not have UTF-8 as browser setting, because UTF-8 is easily recognisable, so if a browser supports UTF-8 it should recognise it automatically, and not try to interpret something else as UTF-8.
See also
[edit]- Code point
- Replacement character
- Substitute character
- Newline – The conventions for representing the line break differ between Windows and Unix systems. Though most software supports both conventions (which is trivial), software that must preserve or display the difference (e.g. version control systems and data comparison tools) can get substantially more difficult to use if not adhering to one convention.
- Byte order mark – The most in-band way to store the encoding together with the data – prepend it. This is by intention invisible to humans using compliant software, but will by design be perceived as "garbage characters" to incompliant software (including many interpreters).
- HTML entities – An encoding of special characters in HTML, mostly optional, but required for certain characters to escape interpretation as markup. While failure to apply this transformation is a vulnerability (see cross-site scripting), applying it too many times results in garbling of these characters. For example, the quotation mark
"
becomes"
,&quot;
,&amp;quot;
and so on. - Bush hid the facts
References
[edit]- ^ King, Ritchie (2012). "Will unicode soon be the universal code? [The Data]". IEEE Spectrum. 49 (7): 60. doi:10.1109/MSPEC.2012.6221090.
- ^ WINDISCHMANN, Stephan (31 March 2004). "curl -v linux.ars (Internationalization)". Ars Technica. Retrieved 5 October 2018.
- ^ "Guidelines for extended attributes". 2013-05-17. Retrieved 2015-02-15.
- ^ "Unicode mailinglist on the Eudora email client". 2001-05-13. Retrieved 2014-11-01.
- ^ "sms-scam" (in Norwegian). June 18, 2014. Retrieved June 19, 2014.
- ^ p. 141, Control + Alt + Delete: A Dictionary of Cyberslang, Jonathon Keats, Globe Pequot, 2007, ISBN 1-59921-039-8.
- ^ "Usage statistics of Windows-1251 for websites". w3techs.com.
- ^ "Usage statistics of KOI8-R for websites". w3techs.com.
- ^ "Declaring character encodings in HTML".
- ^ "PRC GBK (XGB)". Microsoft. Archived from the original on 2002-10-01. Conversion map between Code page 936 and Unicode. Need manually selecting GB 18030 or GBK in browser to view it correctly.
- ^ Cohen, Noam (June 25, 2007). "Some Errors Defy Fixes: A Typo in Wikipedia's Logo Fractures the Sanskrit". The New York Times. Retrieved July 17, 2009.
- ^ "Marathi Typing | English to Marathi | Online Marathi Typing". marathi.indiatyping.com. Retrieved 2022-08-02.
- ^ "Content Moved (Windows)". Msdn.microsoft.com. Retrieved 2014-02-05.
- ^ a b "Unicode in, Zawgyi out: Modernity finally catches up in Myanmar's digital world". The Japan Times. 27 September 2019. Archived from the original on 30 September 2019. Retrieved 24 December 2019.
Oct. 1 is "U-Day", when Myanmar officially will adopt the new system.... Microsoft and Apple helped other countries standardize years ago, but Western sanctions meant Myanmar lost out.
- ^ a b Hotchkiss, Griffin (March 23, 2016). "Battle of the fonts". Frontier Myanmar. Retrieved 24 December 2019.
With the release of Windows XP service pack 2, complex scripts were supported, which made it possible for Windows to render a Unicode-compliant Burmese font such as Myanmar1 (released in 2005). ... Myazedi, BIT, and later Zawgyi, circumscribed the rendering problem by adding extra code points that were reserved for Myanmar's ethnic languages. Not only does the re-mapping prevent future ethnic language support, it also results in a typing system that can be confusing and inefficient, even for experienced users. ... Huawei and Samsung, the two most popular smartphone brands in Myanmar, are motivated only by capturing the largest market share, which means they support Zawgyi out of the box.
- ^ a b Sin, Thant (7 September 2019). "Unified under one font system as Myanmar prepares to migrate from Zawgyi to Unicode". Rising Voices. Retrieved 24 December 2019.
Standard Myanmar Unicode fonts were never mainstreamed unlike the private and partially Unicode compliant Zawgyi font. ... Unicode will improve natural language processing
- ^ "Why Unicode is Needed". Google Code: Zawgyi Project. Retrieved 31 October 2013.
- ^ "Myanmar Scripts and Languages". Frequently Asked Questions. Unicode Consortium. Retrieved 24 December 2019.
"UTF-8" technically does not apply to ad hoc font encodings such as Zawgyi.
- ^ LaGrow, Nick; Pruzan, Miri (September 26, 2019). "Integrating autoconversion: Facebook's path from Zawgyi to Unicode - Facebook Engineering". Facebook Engineering. Facebook. Retrieved 25 December 2019.
It makes communication on digital platforms difficult, as content written in Unicode appears garbled to Zawgyi users and vice versa. ... In order to better reach their audiences, content producers in Myanmar often post in both Zawgyi and Unicode in a single post, not to mention English or other languages.
- ^ Saw Yi Nanda (21 November 2019). "Myanmar switch to Unicode to take two years: app developer". The Myanmar Times. Archived from the original on 24 December 2019. Retrieved 24 December 2019.