Je devine que tu passes par des expressions rationnelles pour détecter les hashtags. L’un des problèmes souvent rencontré est que la plupart des implémentations d’expressions rationnelles sont prévues pour fonctionner en 8 bits uniquement, et non en UTF-8 dont on a habituellement besoin pour faire des caractères non ASCII.
D’après les commentaires que l’on peut lire dans le documentation, le PCRE implémenté dans le PHP a besoin d’être spécialement compilé pour permettre au modificateur « u » (minuscule) de fonctionner correctement en UTF-8 :
►http://php.net/manual/fr/reference.pcre.pattern.modifiers.php
Pour autant, comment se comporte JavaScript à ce niveau ? Quelles différences d’implémentation selon les navigateurs ?
Peut-être est-il prudent de faire passer les hashtags en ASCII en transformant les caractères éligibles en entités HTML équivalentes ? Ainsi, à la place de lire « #शम्मी_कपूर », il faudrait plutôt écrire « #श ;म्मी_कपूर » dans le code source HTML et adapter les expressions rationnelles en conséquence (ce qui est un boulot non trivial) ?
(J’en profite pour noter que les entités inscrites ci-dessus sont incorrectement détectées comme tags... Pas de solution simple quand on essaye de faire son propre dialecte de messages...)