-
-
Save kasperkamperman/198c6389840532b96069ba6a776d69e6 to your computer and use it in GitHub Desktop.
| <?php header('Content-Type: text/html; charset=utf-8'); ?> | |
| <html> | |
| <head> | |
| <title>Fix wrong encoded UTF8 characters</title> | |
| <meta http-equiv="Content-type" content="text/html; charset=utf-8" /> | |
| </head> | |
| <body> | |
| <pre> | |
| <?php | |
| /* Problem description: | |
| A common problem is for characters encoded as UTF-8 to have their individual bytes interpreted as ISO-8859-1 or Windows-1252. | |
| Instead of an expected character, a sequence of Latin characters is shown, typically starting with à or Â. For example, instead of "è" these characters occur: "è". | |
| A Web page is encoded as UTF-8 characters. The Web server mistakenly declares the charset to be ISO-8859-1 in the HTTP protocol that delivers the page to the browser. | |
| The browser will then display each of the UTF-8 bytes in the Web page as Latin-1 characters. | |
| source: http://www.i18nqa.com/debug/bug-utf-8-latin1.html | |
| code source: https://github.com/devgeniem/wp-sanitize-accented-uploads/blob/master/plugin.php#L152 | |
| table source: http://www.i18nqa.com/debug/utf8-debug.html | |
| https://www.kasperkamperman.com/ 2018-07-03 | |
| */ | |
| $str = 'BLØF - ZOUTELANDE, MØ - FINAL SONG, Fédération Camerounaise de Football, It’s Getting the Best of Me'; | |
| echo "original string: ".$str.'<br/>'; | |
| echo "fixed string: ".fixWrongUTF8Encoding($str).'<br/>'; | |
| // displays: BLØF - ZOUTELANDE, MØ - FINAL SONG, Fédération Camerounaise de Football, It’s Getting the Best of Me | |
| function fixWrongUTF8Encoding($inputString) { | |
| // code source: https://github.com/devgeniem/wp-sanitize-accented-uploads/blob/master/plugin.php#L152 | |
| // table source: http://www.i18nqa.com/debug/utf8-debug.html | |
| $fix_list = array( | |
| // 3 char errors first | |
| '‚' => '‚', '„' => '„', '…' => '…', '‡' => '‡', | |
| '‰' => '‰', '‹' => '‹', '‘' => '‘', '’' => '’', | |
| '“' => '“', '•' => '•', '–' => '–', '—' => '—', | |
| 'â„¢' => '™', '›' => '›', '€' => '€', | |
| // 2 char errors | |
| 'Â' => 'Â', 'Æ’' => 'ƒ', 'Ã' => 'Ã', 'Ä' => 'Ä', | |
| 'Ã…' => 'Å', 'â€' => '†', 'Æ' => 'Æ', 'Ç' => 'Ç', | |
| 'ˆ' => 'ˆ', 'È' => 'È', 'É' => 'É', 'Ê' => 'Ê', | |
| 'Ë' => 'Ë', 'Å’' => 'Œ', 'ÃŒ' => 'Ì', 'Ž' => 'Ž', | |
| 'ÃŽ' => 'Î', 'Ñ' => 'Ñ', 'Ã’' => 'Ò', 'Ó' => 'Ó', | |
| 'â€' => '”', 'Ô' => 'Ô', 'Õ' => 'Õ', 'Ö' => 'Ö', | |
| '×' => '×', 'Ëœ' => '˜', 'Ø' => 'Ø', 'Ù' => 'Ù', | |
| 'Å¡' => 'š', 'Ú' => 'Ú', 'Û' => 'Û', 'Å“' => 'œ', | |
| 'Ü' => 'Ü', 'ž' => 'ž', 'Þ' => 'Þ', 'Ÿ' => 'Ÿ', | |
| 'ß' => 'ß', '¡' => '¡', 'á' => 'á', '¢' => '¢', | |
| 'â' => 'â', '£' => '£', 'ã' => 'ã', '¤' => '¤', | |
| 'ä' => 'ä', 'Â¥' => '¥', 'Ã¥' => 'å', '¦' => '¦', | |
| 'æ' => 'æ', '§' => '§', 'ç' => 'ç', '¨' => '¨', | |
| 'è' => 'è', '©' => '©', 'é' => 'é', 'ª' => 'ª', | |
| 'ê' => 'ê', '«' => '«', 'ë' => 'ë', '¬' => '¬', | |
| 'ì' => 'ì', '®' => '®', 'î' => 'î', '¯' => '¯', | |
| 'ï' => 'ï', '°' => '°', 'ð' => 'ð', '±' => '±', | |
| 'ñ' => 'ñ', '²' => '²', 'ò' => 'ò', '³' => '³', | |
| 'ó' => 'ó', '´' => '´', 'ô' => 'ô', 'µ' => 'µ', | |
| 'õ' => 'õ', '¶' => '¶', 'ö' => 'ö', '·' => '·', | |
| '÷' => '÷', '¸' => '¸', 'ø' => 'ø', '¹' => '¹', | |
| 'ù' => 'ù', 'º' => 'º', 'ú' => 'ú', '»' => '»', | |
| 'û' => 'û', '¼' => '¼', 'ü' => 'ü', '½' => '½', | |
| 'ý' => 'ý', '¾' => '¾', 'þ' => 'þ', '¿' => '¿', | |
| 'ÿ' => 'ÿ', 'À' => 'À', | |
| // 1 char errors last | |
| 'Ã' => 'Á', 'Å' => 'Š', 'Ã' => 'Í', 'Ã' => 'Ï', | |
| 'Ã' => 'Ð', 'Ã' => 'Ý', 'Ã' => 'à', 'Ã' => 'í' | |
| ); | |
| $error_chars = array_keys($fix_list); | |
| $real_chars = array_values($fix_list); | |
| return str_replace($error_chars, $real_chars, $inputString); | |
| } | |
| ?> | |
| </pre> | |
| </body> | |
| </html> |
Based on https://www.ascii-code.com/de/uberblick only 117 characters (no duplications):
$signs = ['€' => '€', '‚' => '‚', 'Æ’' => 'ƒ', '„' => '„', '…' => '…', '†' => '†', '‡' => '‡', 'ˆ' => 'ˆ', '‰' => '‰', 'Å ' => 'Š', '‹' => '‹', 'Å’' => 'Œ', 'Ž' => 'Ž', '‘' => '‘', '’' => '’', '“' => '“', 'â€?' => '”', '•' => '•', '–' => '–', '—' => '—', 'Ëœ' => '˜', 'â„¢' => '™', 'Å¡' => 'š', '›' => '›', 'Å“' => 'œ', 'ž' => 'ž', 'Ÿ' => 'Ÿ', '¡' => '¡', '¢' => '¢', '£' => '£', '¤' => '¤', 'Â¥' => '¥', '¦' => '¦', '§' => '§', '¨' => '¨', '©' => '©', 'ª' => 'ª', '«' => '«', '¬' => '¬', '®' => '®', '¯' => '¯', '°' => '°', '±' => '±', '²' => '²', '³' => '³', '´' => '´', 'µ' => 'µ', '¶' => '¶', '·' => '·', '¸' => '¸', '¹' => '¹', 'º' => 'º', '»' => '»', '¼' => '¼', '½' => '½', '¾' => '¾', '¿' => '¿', 'À' => 'À', 'Ã?' => 'Ý', 'Â' => 'Â', 'Ã' => 'Ã', 'Ä' => 'Ä', 'Ã…' => 'Å', 'Æ' => 'Æ', 'Ç' => 'Ç', 'È' => 'È', 'É' => 'É', 'Ê' => 'Ê', 'Ë' => 'Ë', 'ÃŒ' => 'Ì', 'ÃŽ' => 'Î', 'Ñ' => 'Ñ', 'Ã’' => 'Ò', 'Ó' => 'Ó', 'Ô' => 'Ô', 'Õ' => 'Õ', 'Ö' => 'Ö', '×' => '×', 'Ø' => 'Ø', 'Ù' => 'Ù', 'Ú' => 'Ú', 'Û' => 'Û', 'Ü' => 'Ü', 'Þ' => 'Þ', 'ß' => 'ß', 'à ' => 'à', 'á' => 'á', 'â' => 'â', 'ã' => 'ã', 'ä' => 'ä', 'Ã¥' => 'å', 'æ' => 'æ', 'ç' => 'ç', 'è' => 'è', 'é' => 'é', 'ê' => 'ê', 'ë' => 'ë', 'ì' => 'ì', 'Ã' => 'í', 'î' => 'î', 'ï' => 'ï', 'ð' => 'ð', 'ñ' => 'ñ', 'ò' => 'ò', 'ó' => 'ó', 'ô' => 'ô', 'õ' => 'õ', 'ö' => 'ö', '÷' => '÷', 'ø' => 'ø', 'ù' => 'ù', 'ú' => 'ú', 'û' => 'û', 'ü' => 'ü', 'ý' => 'ý', 'þ' => 'þ', 'ÿ' => 'ÿ',];
p á�ÐMâ � ã¨��ã´�Gá�� ã���å��Gâ� @ã���åÔ��ã �å �@ã( ã ��å@��ã��@ã�; ãgÅ�ë ã�Рက½èð@-ép�â
-é8ÐMâ ãÄû�ë\� ã�ë�ë� �åGº�ë(»
ãI@�ã�°@ã �å ›å�@@ã�� á�ž�ë$ �å�� á ›å�ž�ëL
�ã( �å ›å�@ã�� áý��ë$ �å�� á ›åü��ëS �ã �å ›å� @ã� áó��ë € á ›å
� áò��ë[P�ã @ á ›å�P@ã�� áé��ë
á ›å�� áè��ë� �åE��ã��å��@ã�@�å<0 ã�€�å �å �å$ �å� �å( �å� �å$ �å �å� �å �åÒ£ ë¨��ã � ã� @ã �å�ÐGâ½èð@½è°Å�ê�@-é�p�âÐMâ�@ á�0—å��—å�0�å�0 áÀ—å ��èJ†�ëÐ��ãô@€å �@ã���â �€å�ÐGâ�€½è¼†�êþÞÿçþÞÿç� á � ãàŸ�ê�ÿ/á ã�ÿ/á ã�ÿ/áð@-ép�â�€-å�ÐMâ @ áŒ��å
ã Pã ����”� Q�� �� á�ÐGâ�€�äð€½èÐ�”å@¢�ë Pã÷ÿÿ���”å�% ãŒ�”å�„à���â���à��€à��å� áÚ& ëœ�”å P á˜�”å���â���à��€à��å� áÑ& ë? UãQ Š��„à? Pã(V‘å< Š UãK�„à(��å Qã8
†�…âŒ4”åCŠ€â
ã Sã �˜å� ˜å� �d”åô�”å��â†a†à†1ƒàã0“å� Pá� ˜Ä”åã \ãÃÿÿœ�”å� â€�€à€�Œà �å Sá¼ÿÿ�¨d”å¤�”å�
�â†a†á†�€à �åSà��� Ià Pã Ê Vã� �� Õå Pã� Ñ� P�( �Ô�”åï¡�ë PãAã� á�ÐGâ�€�äð€½è Uã�-ê�ë´ �ãc��ã� @ãÞ7 ã �åº� ã @ã��@ã 0@ãÆ! ã,¥�ëì¤�ë ð ãýÿÿê�ê�ë¡ �ãc��ã� @ãÞ7 ã �åº� ã @ã��@ã 0@ãÅ! ã�¥�ëݤ�ë ð ãýÿÿê� Õå Pã� � ˜å YáÔÿÿ�� Õå Pã� �Ô�”彡�ë Pã�
��”å
ãŒ�”å���âœ4”å˜$”å���à��€à���â���à �å��‚à�‘å� Pá �dÿÿê� Õå Pã� � ˜å�˜å� Pá� êØ�”墡�ë PããXÿÿ���Õå ãè�Äå Qã� á � ã� ã¿% 댔”å��”å ™å� Qá������„�� êÐ�”å„&�ã @ã � ã¶¡�댔”å��”åÐ4”åø� ãD
•å²PÕá ˜å°P„á� ƒâÐ�„å� ‚â ˆå� �âðd„å�ã€�€à€�‰à �åô�„å� á�ÐGâ�€�äð€½è ã�ÿ/áð@-ép�â �-é�ÐMâ @ á˜��å P ã Pã ��œ�”� Q�� �� á�ÐGâ �½èð€½èÔ�”å_¡�ë Pã÷ÿÿ�œ�”å�% ã˜�”å���â���à��€à��å� „àú% ë? Pã� Š �„à(f�å Vã�†�†âCŠ€â �˜å� ˜å QáâÿÿšØ�”åÜ$”å� QáÞÿÿ�h!–å Rã�
�0Öå$ –å��Öå Sã'
1Šàx!�ã� @ãƒ1†à� Óç Rã � Yã �Ìÿÿêyé�ë´ �ãc��ã� @ãÞ7 ã �åº� ã @ã��@ã 0@ã×# ãx¤�ë8¤�ë ð ãýÿÿêjé�ëû �ãc��ã� @ãÞ7 ã �åº� ã @ã��@ã 0@ãï# ãi¤�ë)¤�ë ð ãýÿÿê Yã�
���âØ�„å˜�”å� €â� ˆå Qã�
œ�”å� €â� âœ$„å€�€à€��à �å� ê� ã �å��„å� á�ÐGâ �½èð€½èœ�”å˜�”å���â¨4”å¤$”å���à��€à���â���à �å��‚à�‘å� Páˆÿÿ�� Öå PãN
H –å� Pã Ö� P�I
”å ãÀ�”å P ã@0�å� á3ÿ/á˜�”åêTÄå Pãœ�”� ��� Q�����������€��P�� �•å Qã,�•åX"��ØT”åp&�����àœ$”å 0‘å���â���á��€àÇ��ã��@ã �å� á P�å°� ëœ$”å�P ã˜�”å� �â��”å¼3Öá‚!‚á Åá��„å‚��à��Öå(
–å$0�å�%”å0‘å� �å� CàÔ�”å�/oá �åD�å¢" áH�Áå, �å„&�ã @ã � ã�5„åÒ �ëØ�”å��˜å� €âØ�„å� �â� ˆå� á�ÐGâ �½èð€½èØ�”åš �ë Pã2ÿÿ�°ÿÿêð@-ép�â-é�ÐMâ P á¤��å @ ã Pã�
�
á �å¨�¶å Qá� Ø�•å‡ �ë Pã� � á�ÐGâ ½èð€½è¨�•å�% ã¤�•å���â���à��€à��å� …à�% ë? Pã� Š �…à(��å Pã� "�€âCº�â� á ›å��ºå� Ráåÿÿ �€Ðå Xã� ¤$•å���âÜ�•å Rã �Šå� €âÜ�…åÚÿÿ –å� á �’å� PáÕÿÿ � ê¡è�ëÿ �ãc��ã� @ãÞ7 ã �åº� ã @ã��@ã 0@ã›$ ã £�ë£�ë ð ãýÿÿê� Ðå Pã�Ø�•å„&�ã @ã � ão �ëÜ�•å šå���âÜ�…å��oá� €â Šå¡B á� á�ÐGâ
½èð€½èÔ�•å5 �ë Pãêÿÿ
›å��›å� @à� Pã¨ÿÿ�äÿÿêð@-ép�â
-éÐMâ @ á¬� ã „àè�Ôåˆ� ã Pã� „ ��’å Qã� ’� 0‘�� R�� �cè�ë´��ãc��ã� @ãÞ7 ã �åº� ã @ã��@ã 0@ã
& ãb£�ë"£�ë ð ãýÿÿê� �â(P„â81�ã‚!‚à�0@ã‚��à� á�
á�¶å� Fâ� �å���è���ã��@ã� áê� ë�� ã �–å „àŸ$ ë� pã& ? Pã� Š �„à(��å Qã� h�‘å Pã' è4Ôå%�ã •”å–å Sã�‰çC ���Ñå Yã,�5”å�
ã�0Æá�5„å- ê&è�ëw��ãc��ã� @ãÞ7 ã �åº� ã @ã��@ã 0@ã�& ã%£�ëå¢�ë ð ãýÿÿê�ã8!�ã� @ã� @ã�� á¿¢�ë ã�ÐGâ
½èð€½è
è�ëû �ãc��ã� @ãÞ7 ã �åº� ã @ã��@ã 0@ã�& ã£�ëÌ¢�ë ð ãýÿÿê�5Ôå�
ã Sã�5”��5”��0Æá�$”åŒä”å� �â�5„å�Ñå‚!‚á¸ÃÑá°‘å‚!Žà�•Äå�eÄå °‚å$À‚å�0‚å �å�‘å �ˆå� ál0’å àã3ÿ/á Pã�
áç�ë©
�ãc��ã� @ãÞ7 ã �åº� ã @ã��@ã 0@ãW& ãà¢�ë ¢�ë ð ãýÿÿê���ã81�ã��@ã�0@ã� á� áq� ë ã�ÐGâ
½èð€½èð@-ép�â�€-åÐMâ @ á¸� ã „àê�Ôå”� ã Pã� „ ��’å Qã� ’� 0‘�� R�� �¶ç�ë[ �ãc��ã� @ãÞ7 ã �åº� ã @ã��@ã 0@ã¸& ãµ¢�ëu¢�ë ð ãýÿÿê� �â(€„âI1�ã‚!‚à�0@ã‚Q�à� á�µå�`Eâ� �åB �è���ã��@ã� á>� ë�� ã �•å „àó# ë� pã1
? Pã Š �„à(��å Pã�
h��å Pã2