В следующем коде ü
- это не один символ Unicode U + 00FC, а отдельный кластер графем, состоящий из двух символов Unicode, простого ASCII u
U + 0075, за которым следует комбинированный диарез U + 0308.
fmt.Println("Jürgen Džemal")
fmt.Println("Ju\u0308rgen \u01c5emel")
Если я запускаю его на игровой площадке , он работает как положено.
Если я запускаю его в окне «Командная строка» MS Windows 10, он визуально не объединяет объединяющий символ с предыдущим.Однако, когда я вырезал и вставил текст сюда, он выглядит правильно:
C:\> ver
Microsoft Windows [Version 10.0.17134.228]
C:\> test
Jürgen Džemal
Jürgen Džemel
На экране в окне «Командная строка» это выглядело примерно так:
Ju¨rgen Džemel
Изменение кодастраница (chcp) с 850 по 65001 не имеет значения.Изменение шрифтов (Consolas, Courier и т. Д.) Не имело значения.
В прошлом у меня возникали проблемы, которые были принципиально связаны с тем, что Microsoft требовала, чтобы программы Windows использовали другой API для вывода символов в STDOUT в зависимости от того, подключен ли STDOUT кконсоль или в файл.Я не знаю, является ли это другим проявлением той же проблемы.
Есть ли что-то, что я могу сделать, чтобы этот графемный кластер Unicode выглядел правильно?