Как проверить и заменить символы, отличные от UTF-8, в tcl?

Каков наилучший способ поиска, если данная строка содержит символы, отличные от UTF-8, в tcl? Является ли регулярное выражение "^[\x00-\x7f]+$" единственным способом продвижения вперед?

Я пытаюсь написать tcl-процедуру, чтобы проверить, содержит ли данная переменная символы, отличные от UTF-8, и заменяет ли она ее на «Не поддерживается».


person egorulz    schedule 11.03.2014    source источник


Ответы (1)


Все символы Tcl являются символами Unicode.

Хорошо, это не полезно. Похоже, вы на самом деле спрашиваете о символах, отличных от ASCII. Предположим, вы хотите заменить каждый символ, отличный от ASCII, на ?, вы можете использовать подстановку регулярного выражения, например:

regsub -all {[\u0080-\uffff]} $inputString "?" outputString

Ключевым моментом здесь является то, что RE находится в фигурных скобках (практически всегда настоятельно рекомендуется) и что мы используем escape-последовательности \uXXXX (которые также понимает механизм RE). Потенциально это поставит много ?, но я уверен, что вы сможете приспособиться.

person Donal Fellows    schedule 11.03.2014