Используя скрипт:
set flist [glob *]
foreach f $flist {
if { [file exists $f] } {
puts "$f: OK"
} else {
puts "$f: NG"
}
}
set a "文档名称"
set f $a
if { [file exists $f] } {
puts "$f: OK"
} else {
puts "$f: NG"
}
Просто запустив tclsh.exe script.tcl
, последний оператор if потерпит неудачу. Скрипт читается с использованием системной кодировки, и китайские символы не конвертируются правильно. Первый l oop, использующий оператор glob
, работает.
Использование tclsh.exe -encoding utf-8 script.tcl
, а последний оператор if работает.
По сути, урок состоит в том, чтобы не вставлять символы utf-8 в вашем сценарии. Вместо этого считывайте данные из файла (используя fconfigure $fh encoding utf-8
) или из другого источника, а затем используйте данные.
Консоль cmd.exe windows не поддерживает альтернативные наборы символов и не может использоваться для отладки. Это просто не будет работать. Вместо этого запишите выходные данные отладки в файл и используйте блокнот для просмотра файла.