2 votes

Les phrases coréennes sont divisées de manière aléatoire

Je suis confronté à un problème : J'ai un texte en Unicode décimal coréen et le texte est affiché en 4 colonnes et plusieurs lignes (car il s'agit des réponses d'un test de langue). Le problème est que, comme la largeur de chaque réponse est de 20 %, la phrase se divise aléatoirement au milieu du mot lorsqu'elle ne tient pas, au lieu de se placer dans les espaces entre les mots. Je ne sais pas comment traiter ce problème, puisque ce texte est chargé et affiché automatiquement depuis une base de données.

Le code HTML pour chacune des 4 colonnes est le suivant :

<table class="courses" border="0" cellpadding="2" cellspacing="2" width="100%" style="font-size:13px;">
  <tbody>
    <td width="20%">
     <p align="center">
       <input name="a[X]" value=1" type="radio">
       <br>
       <?php echo "&#48148;&#49240;&#47732; &#44032;&#51648; &#47560;&#49464;&#50836;" ?> // this comes from a DB, its the unicodes of the korean characters<br>
    </p>
   </td>
</tbody>
</table>

Qu'est-ce que je pourrais faire pour corriger cela et, quand ça ne va pas, éviter de diviser au hasard, mais le faire quand une phrase se termine ? Si vous remarquez dans les codes Unicode, vous pouvez dire qu'il y a un espace entre ;면 가, mais ça se casse n'importe où, pareil pour tout le texte.

(Notez qu'il n'y a aucun problème d'encodage, les caractères coréens sont affichés correctement. Et cela ne se produit pas avec d'autres langues comme le suédois ou l'espagnol).

EDITAR

Voici un exemple de travail .

Notez que dans l'exemple, la première réponse est coupée dans les deux derniers caractères, alors que ce mot a cinq caractères, et devrait donc être coupé 3 caractères avant.

5voto

Jon Points 194296

La coupure de ligne pour le texte CJK (chinois/japonais/coréen) peut être assez problématique compte tenu de l'état actuel des normes Web.

Il n'y a pas grand-chose que l'on puisse faire sans tenir compte du langage ; le niveau 3 de CSS définit attributs connexes ( line-break y word-break ), mais je ne suis pas sûr du niveau de support des navigateurs modernes (les navigateurs moins modernes ne sont évidemment pas concernés).

3voto

dda Points 4419

Cela n'a pas vraiment d'importance puisque le coréen peut être divisé n'importe où de toute façon. Voir cette capture d'écran de Chosun.com :

enter image description here

Les mots sont coupés n'importe où, apparemment au hasard. Vous n'avez pas à vous soucier des césures.

0voto

ryan Points 3574

Il semble que vous rencontriez juste le comportement par défaut de white-space . Vous pourriez jeter un coup d'œil au CSS white-space et essayez quelque chose comme pre .

0voto

Rems Points 170

Je suis confronté au même problème et je pense que la meilleure solution est d'entourer chaque mot d'un espace avec le symbole white-space: nowrap; . Cela permet de s'assurer qu'il n'y aura pas de saut de ligne à l'intérieur du mot.

Voir ce JSFiddle pour une preuve de concept : http://jsfiddle.net/we7jx08r/ . Lorsque vous modifiez la largeur de body, vous remarquerez que les sauts de ligne sont toujours corrects.

Voir http://css-tricks.com/almanac/properties/w/whitespace/ para white-space: nowrap prise en charge des navigateurs (IE5.5+, FF1+, Safari 1+).

0voto

Manuel Cheța Points 209

Vous pourriez essayer une solution sur laquelle j'ai travaillé il y a quelque temps : https://stackoverflow.com/a/46714474/2114953

C'est-à-dire, si vous aimez utiliser JS afin d'envelopper chaque mot dans des éléments HTML de type span et ensuite utiliser CSS display : inline-block pour forcer les mots à aller sur de nouvelles lignes si nécessaire.

Prograide.com

Prograide est une communauté de développeurs qui cherche à élargir la connaissance de la programmation au-delà de l'anglais.
Pour cela nous avons les plus grands doutes résolus en français et vous pouvez aussi poser vos propres questions ou résoudre celles des autres.

Powered by:

X