Все символы являются символами Юникода. Мы, говорящие по-английски, не используем магические символы, отличные от Юникода, из другой вселенной, а также символы символов английского языка, используемые на английском языке, настолько неясные, что их пока нет в Юникоде.
Вы не детализируете точно, что вы пытались с TextInfo, и ответ, на который вы ссылаетесь, не очень подробен. Когда я пытаюсь:
CurrentCulture.TextInfo.ToTitleCase("English here, then some Greek: Ποικιλόθρον', ἀθάνατ' ἀφρόδιτα, παῖ δίος, δολόπλοκε, λίσσομαί σε μή μ' ἄσαισι μήτ' ὀνίαισι δάμνα, πότνια, θῦμον·")
Я вернусь:
English Here, Then Some Greek: Ποικιλόθρον', Ἀθάνατ' Ἀφρόδιτα, Παῖ Δίος, Δολόπλοκε, Λίσσομαί Σε Μή Μ' Ἄσαισι Μήτ' Ὀνίαισι Δάμνα, Πότνια, Θῦμον·
Однако, если я начну с прописных букв:
System.Globalization.CultureInfo.CurrentCulture.TextInfo.ToTitleCase("ENGLISH HERE, THEN SOME GREEK: ΠΟΙΚΙΛΌΘΡΟΝ', ἈΘΆΝΑΤ' ἈΦΡΌΔΙΤΑ, ΠΑῖ ΔΊΟΣ, ΔΟΛΌΠΛΟΚΕ, ΛΊΣΣΟΜΑΊ ΣΕ ΜΉ Μ' ἌΣΑΙΣΙ ΜΉΤ' ὈΝΊΑΙΣΙ ΔΆΜΝΑ, ΠΌΤΝΙΑ, ΘῦΜΟΝ·")
Я все прописными буквами, как вы описать. Вы также начинаете с прописных букв?
Заглавный регистр оставляет все заглавные слова нетронутыми, чтобы избежать повреждения аббревиатур и сокращений, таких как ".NET", "NATO", "ΙΧΘΥΣ" и т. Д. Если вам необходимо разобраться с этим, сначала выполните ToLower:
var ti = System.Globalization.CultureInfo.CurrentCulture.TextInfo;
return ti.ToTitleCase(ti.ToLower("ENGLISH HERE, THEN SOME GREEK: ΠΟΙΚΙΛΌΘΡΟΝ', ἈΘΆΝΑΤ' ἈΦΡΌΔΙΤΑ, ΠΑῖ ΔΊΟΣ, ΔΟΛΌΠΛΟΚΕ, ΛΊΣΣΟΜΑΊ ΣΕ ΜΉ Μ' ἌΣΑΙΣΙ ΜΉΤ' ὈΝΊΑΙΣΙ ΔΆΜΝΑ, ΠΌΤΝΙΑ, ΘῦΜΟΝ·"));