我在这里面临一个问题:我有一个韩文十进制Unicode的文本,文本显示在4列和多行中(因为它是语言测试的答案)。问题在于,因为每个答案的宽度是20%,所以当句子不适合时,句子会在单词的中间随机分割,而不是在单词之间的空格中。我不知道如何对待这个,因为这个文本是从数据库中自动加载和显示的。
4列中每一列的HTML代码如下:
<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 "바쁘면 가지 마세요" ?> // this comes from a DB, its the unicodes of the korean characters<br>
</p>
</td>
</tbody>
</table>
我可以做些什么来解决这个问题,当它不适合时,避免随机分裂,但是当一个句子结束时这样做?如果你在Unicode代码中注意到,你可以看出它之间有一个空格;면&amp;#44032,但是它在任何地方都会中断,对于所有文本都是相同的。
(请注意,没有任何编码问题,韩文字符显示正确。而瑞典语或西班牙语等其他语言也不会出现这种情况。)
修改
请注意,在示例中,第一个答案分为最后两个字符,当该单词有五个字符时,应该在之前分割3个字符。
答案 0 :(得分:5)
根据网络标准的现状,CJK(中文/日文/韩文)文本的换行可能会非常成问题。
你不能用语言无关的方式做太多事情; CSS级别3定义了related attributes(line-break
和word-break
),但我不太确定现代浏览器的支持级别是什么(显然不那么现代的浏览器完全不属于图片)。
答案 1 :(得分:2)
因为韩国人无论如何都可以分开,所以并不重要。请参阅Chosun.com的截图:
这些词在任何地方被切割,看似随意。你不必担心连字符。
答案 2 :(得分:0)
听起来你刚刚遇到white-space
的默认行为。您可以查看CSS white-space
属性并尝试使用pre
。
答案 3 :(得分:0)
我面临同样的问题,我认为最好的解决方案是用white-space: nowrap;
将每个单词包装在一个范围内。这可以确保在单词中不会有任何换行符。
请参阅此JSFiddle以获取概念验证:http://jsfiddle.net/we7jx08r/。当您更改正文的宽度时,您会注意到换行符始终是正确的。
请参阅http://css-tricks.com/almanac/properties/w/whitespace/了解white-space: nowrap
浏览器支持(IE5.5 +,FF1 +,Safari 1 +)。
答案 4 :(得分:0)
您可以尝试我之前工作的解决方案:https://stackoverflow.com/a/46714474/2114953
也就是说,如果你想使用JS来将每个单词包装成span HTML元素然后使用CSS display:inline-block来强制单词在必要时转到新行。
答案 5 :(得分:0)
我一直在寻找这个我正在研究的项目。我认为https://www.w3.org/TR/css-text-3/#line-breaking涵盖了这一点,尤其是“示例5”:
另一个例子是,韩语有两种断行方式:在任意两个韩语音节之间(分词:正常),或者像英语一样,主要在空格处(分词:保持全部)。
事实上,Google Chrome(第61版)的默认行为是它打破了音节(我假设我不会说或读韩语)
设置word-break:all,似乎会覆盖此行为并仅将换行符放在空白处。
答案 6 :(得分:0)
word-break: keep-all;
为我修复了它。如果用户专门使用韩语查看网站,则添加了此内容。
word-break: keep-all;
->“中文/日文/韩文(CJK)文本不应该使用分词。非CJK文本行为与值'normal'相同”(https://www.w3schools.com/cssref/css3_pr_word-break.asp)< / p>