Преобразование новой строки в пробел имеет смысл для английского языка, например, следующий HTML
<p>
This is
a sentence.
</p>
После преобразования новой строки в пробел в браузере мы получаем следующее:
This is a sentence.
Это хорошо для английского языка, но не хорошо для китайских иероглифов, потому что мы не используем пробелы для разделения слов в китайском . Вот пример (китайское предложение имеет то же значение, что и «Это предложение»):
<p>
这是
一句话。
</p>
Я получаю следующий результат на Chrome, Safari и IE
这是 一句话。
Что я хотел, так это без лишних пробелов.
这是一句话。
Я не знаю , почему браузер не игнорирует символ новой строки, если последний символ текущей строки и первый символ следующей строки являются китайскими символами (что, я думаю, имеет больше смысла) , Или они предоставили этот механизм, но нуждаются в особой обработке?
Кстати, в Vim при использовании «J» для объединения строк пробел не добавляется, если последний и первый символы в 2 строках - все китайские символы. Но для английского будет добавлено место. Так что я думаю, что Vim специально для этого обрабатывает.
Обновление:
Хотя я думаю, что это проблема с браузером, я должен с этим смириться. Поэтому в настоящее время я должен предварительно обработать текст Markdown, чтобы соединить китайские строки перед генерацией HTML. Вот как я делаю это в Ruby, полный код, который также обрабатывает знаки препинания на китайском, находится на gist
#encoding: UTF-8
# Requires ruby 1.9.x, and assume using UTF-8 encoding
class String
# The regular expression trick to match CJK characters comes from
# http://stackoverflow.com/a/4681577/306935
def join_chinese
gsub(/(\p{Han})\n(\p{Han})/m, '\1\2')
end
end