L’optimisation des sites web en japonais

25 mai 2010

Lorsqu’il s’agit de sites dont le contenu est en japonais, il est possible d’alléger le poids de la page en appliquant quelques recettes simples.
Certaines suggestions de ce billet s’appliquent sûrement aussi aux autres langues à encodage multi-octet comme le Chinois ou le Coréen. Mais je n’ai jamais eu à créer des sites dans ces langues.

Choisir judicieusement l’encodage

Il existe 3 encodages principaux pour les caractères japonais. Le plus utilisé est Shift_JIS, puis EUC-JP. Il existe également l’SO-2202-JP, mais je ne crois pas avoir jamais vu de site web l’utiliser.

Bien entendu, le japonais peut être encodé en UTF-8. C’est même sur celui-ci que votre choix devra se porter si votre contenu est, par ailleurs, disponible en d’autres langues ou si vous utilisez des API externes fournissant du contenu en UTF-8. Cela vous évitera des opérations d’encodage/réencodage du jeu de caractères couteuses en ressources serveur.

Sites japonais Encodage
http://fc2.com/ja utf-8
http://www.rakuten.co.jp x-euc-jp
http://ameblo.jp utf-8
http://www.livedoor.com utf-8
http://mixi.jp euc-jp
http://goo.ne.jp utf-8
http://www.nicovideo.jp utf-8
http://www.nifty.com shift_jis
http://2ch.net shift_jis
http://www.biglobe.ne.jp shift_jis

Les 3 encodages typiquement japonais ne sont pas égaux en terme de poids. Le codage des caractères est plus ou moins couteux selon celui qui est employé.
J’ai procédé à une comparaison de sites à fort contenu en japonais et comparé le poids gzippé d’une même page dans différents encodages.

Sites Encodage Poids shift_jis euc-jp iso-2022-jp utf-8
http://fc2.com/ja utf-8 6865 6470
-5,75%
6470
-5,75%
6406
-6,69%
http://www.rakuten.co.jp x-euc-jp 34624 34575
-0,14%
34152
-1,36%
35945
+3,82%
http://ameblo.jp utf-8 7881 7402
-6,08%
7395
-6,17%
7254
-7,96%
http://www.livedoor.com utf-8 22231 21050
-5,31%
21068
-5,23%
20726
-6,77%
http://mixi.jp euc-jp 3023 3015
-0,26%
2948
-2,48%
3143
+3,97%
http://goo.ne.jp utf-8 16121 15245
-5,43%
15270
-5,28%
15044
-6,68%
http://www.nicovideo.jp utf-8 14550 13720
-5,70%
13728
-5,65%
13546
-6,90%
http://www.nifty.com shift_jis 31596 31582
-0,04%
31058
-1,70%
33201
+5,08%
http://2ch.net shift_jis 1828 1824
-0,22%
1765
-3,45%
1928
+5,47%
http://www.biglobe.ne.jp shift_jis 13992 14051
+0,42%
13841
-1,08%
14775
+5,60%

On constate rapidement que l’UTF-8 est bien plus lourd. Ce n’est pas vraiment une surprise. Sur les autres encodages, les caractères sino-japonais (kanji) utilisent généralement 2 octets, en UTF-8, il n’est pas rare que ceux-ci soient codés sur 3, 4 octets, voire plus. Le Shift_JIS et le EUC-JP se valent en terme de poids. Il est donc recommandé d’utiliser l’un d’entre eux lorsque cela est possible. Suprise, tandis que l’ISO-2202-JP est le second encodage le plus lourd après l’UTF-8, il se compresse mieux et donne au final un poids plus léger une fois gzippé.

Prendre avantage des caractères demi-chasse

Cette astuce est loin d’être nouvelle et remonte au début du développement de sites pour mobiles iMode.
Cela consiste à utiliser une particularité des encodages japonais qui proposent pour certains caractères des version étroites (demi-chasse) codées à l’aide d’un seul octet.
Les caractères disponibles sont les katakana. Bien qu’ils soient plus fins, ils restent lisibles.
Notons cependant que les marques pour les syllabes voisées ou plosives utilisent un caractère supplémentaire. Ainsi le katakana « Pa » compte pour 2 caractères (Ha + la marque de la plosive).
Il est très facile de convertir en PHP entre les caractères simple chasse et double chasse via la fonction mb_convert_kana().

Pour les mêmes raisons, il est fortement déconseillé d’utiliser les versions double-chasse (ou pleine chasse) des caractères alphabétiques. Outre le fait qu’ils sont codés sur 2 octets, et pèsent donc 2 fois plus lourds, ils sont d’une esthétique discutable et rendent un texte carrément illisible. La fonction PHP mb_convert_kana() prend également en charge la conversion des caractères alphabétiques de double-chasse en demi-chasse (et vice versa).

Conclusion

En résumé, si votre site est uniquement en japonais, il est vivement conseillé d’utiliser l’encodage SHIFT_JS ou EUC-JP qui vous permettra de gagner sur le poids de la page, ou encore ISO-2022-JP si vous activez la compression Gzip. Vous pouvez très facilement réaliser des conversions d’encodage en PHP à l’aide des fonctions mb_convert_encoding() ou iconv(). D’autre part, utilisez autant que possible les versions demi-chasse des caractères qui sont moins lourdes que leurs équivalents double chasse.

頑張ってください。

Site    Encodage
http://fc2.com/ja/    utf-8
http://www.rakuten.co.jp/    x-euc-jp
http://ameblo.jp/    UTF-8
http://www.livedoor.com/    utf-8
http://mixi.jp/    euc-jp
http://goo.ne.jp/    UTF-8
http://www.nicovideo.jp/    utf-8
http://www.nifty.com/    shift_jis
http://2ch.net/    shift_jis
http://www.biglobe.ne.jp/    Shift_JIS

Laisser un commentaire