J. *_*tin 1 lisp unicode clisp common-lisp
我有一些代码:
\n\n; Palatal Pulmonic Consonants\n(loop for e in (list\n \'(:nasal "\xc9\xb2")\n \'(:plosive "c") \'(:plosive "\xc9\x9f")\n \'(:fricative "\xc3\xa7") \'(:fricative "\xca\x9d")\n \'(:approximant "j")\n \'(:lateral-fricative "\xca\x8e\xcc\xa5\xcb\x94")\n \'(:lateral-approximant "\xca\x8e")\n \'(:lateral-flap "\xca\x8e\xcc\xaf") ) do\n (add-sound :palatal (car e) (cadr e)))\nRun Code Online (Sandbox Code Playgroud)\n\n我对所有 IPA 符号都有很多这样的位,这并不是问题所在。
\n\n但是,尝试运行我的代码会出现此错误:
\n\n\n\n\nSYSTEM::STRING-READER:CHARSET:CP1252 转换中的字节 #x90 无效
\n
这很好,但我无法在脚本文件中找到一种方法来告诉 CLIsp 我正在以 UTF-8 格式键入字符串,并且我希望它以 UTF-8 格式读取并打印它们。
\n\n如何全局、永久设置 UTF-8。我的想法与 Ruby 类似# encoding: utf-8
具体来说,我使用的是 CLIsp 2.48。
\n\n编辑:
\n\n以下是导致问题的文件的完整源列表:
\n\n(defstruct sound place means sym)\n(defparameter $sounds nil)\n(defun add-sound (place means sym)\n (setf $sounds (append $sounds (list (make-sound :place place :means means :sym sym)))))\n; There are alot of IPA symbols, so we\'ll add them column by column.\n; The first column is the Bilabial Pulmonic Consonants\n(loop for e in (list\n \'(:nasal "m") \'(:plosive "p")\n \'(:plosive "b") \'(:fricative "\xc9\xb8")\n \'(:fricative "\xce\xb2") \'(:trill "\xca\x99")\n \'(:flap "\xe2\xb1\xb1\xcc\x9f") ) do\n (add-sound :bilabial (car e) (cadr e)))\n; Labiodental Pulmonic Consonants\n(loop for e in (list\n \'(:nasal "\xc9\xb1") \'(:plosive "p\xcc\xaa")\n \'(:plosive "b\xcc\xaa") \'(:fricative "f")\n \'(:fricative "v") \'(:approximant "\xca\x8b")\n \'(:flap "\xe2\xb1\xb1") ) do\n (add-sound :labiodental (car e) (cadr e)))\n; Dental Pulmonic Consonants\n(loop for e in (list\n \'(:nasal "n\xcc\xaa")\n \'(:plosive "t\xcc\xaa") \'(:plosive "d\xcc\xaa")\n \'(:fricative "\xce\xb8") \'(:fricative "\xc3\xb0") ) do\n (add-sound :dental (car e) (cadr e)))\n; Alveolar Pulmonic Consonants\n(loop for e in (list\n \'(:nasal "n")\n \'(:plosive "t") \'(:plosive "d")\n \'(:fricative "s") \'(:fricative "z")\n \'(:trill "r")\n \'(:flap "\xc9\xbe")\n \'(:lateral-fricative "\xc9\xac") \'(:lateral-fricative "\xc9\xae")\n \'(:lateral-approximant "l")\n \'(:lateral-flap "\xc9\xba") ) do\n (add-sound :alveolar (car e) (cadr e)))\n; Palato-Alveolar Pulmonic Consonants\n(loop for e in (list\n \'(:fricative "\xca\x83") \'(:fricative "\xca\x92")\n \'(:approximant "\xc9\xb9") ) do\n (add-sound :palato-alveolar (car e) (cadr e)))\n; Retroflex Pulmonic Consonants\n(loop for e in (list\n \'(:nasal "\xc9\xb3")\n \'(:plosive "\xca\x88") \'(:plosive "\xc9\x96")\n \'(:fricative "\xca\x82") \'(:fricative "\xca\x90")\n \'(:approximant "\xc9\xbb")\n \'(:trill "\xc9\xbd\xcd\xa1r")\n \'(:flap "\xc9\xbd")\n \'(:lateral-fricative "\xc9\xad\xcb\x94\xcc\x8a")\n \'(:lateral-approximant "\xc9\xad")\n \'(:lateral-flap "\xc9\xba\xcc\xa2") ) do\n (add-sound :retroflex (car e) (cadr e)))\n; Palatal Pulmonic Consonants\n(loop for e in (list\n \'(:nasal "\xc9\xb2")\n \'(:plosive "c") \'(:plosive "\xc9\x9f")\n \'(:fricative "\xc3\xa7") \'(:fricative "\xca\x9d")\n \'(:approximant "j")\n \'(:lateral-fricative "\xca\x8e\xcc\xa5\xcb\x94")\n \'(:lateral-approximant "\xca\x8e")\n \'(:lateral-flap "\xca\x8e\xcc\xaf") ) do\n (add-sound :palatal (car e) (cadr e)))\n; Velar Pulmonic Consonants\n(loop for e in (list\n \'(:nasal "\xc5\x8b")\n \'(:plosive "k") \'(:plosive "\xc9\xa1")\n \'(:fricative "x") \'(:fricative "\xc9\xa3")\n \'(:approximant "\xc9\xb0")\n \'(:lateral-fricative "\xca\x9f\xcc\x9d\xcc\x8a")\n \'(:lateral-approximant "\xca\x9f") ) do\n (add-sound :velar (car e) (cadr e)))\n; Uvular Pulmonic Consonants\n(loop for e in (list\n \'(:nasal "\xc9\xb4")\n \'(:plosive "q") \'(:plosive "\xc9\xa2")\n \'(:fricative "\xcf\x87") \'(:fricative "\xca\x81")\n \'(:trill "\xca\x80")\n \'(:flap "\xc9\xa2\xcc\x86") ) do\n (add-sound :uvular (car e) (cadr e)))\n; Pharyngeal Pulmonic Consonants\n(loop for e in (list\n \'(:plosive "\xca\xa1")\n \'(:fricative "\xc4\xa7") \'(:fricative "\xca\x95")\n \'(:trill "\xca\x9c") \'(:trill "\xca\xa2")\n \'(:flap "\xca\xa1\xcc\xaf") ) do\n (add-sound :pharyngeal (car e) (cadr e)))\n; Glottal Pulmonic Consonants\n(loop for e in (list\n \'(:plosive "\xca\x94")\n \'(:fricative "h") \'(:fricative "\xc9\xa6") ) do\n (add-sound :glottal (car e) (cadr e)))\nRun Code Online (Sandbox Code Playgroud)\n
任何一个
\n\n使用操作系统:
\n\n\n\n或者
-E UTF-8使用命令行参数( )运行 CLISP clisp.exe -E UTF-8 /path/....,或者这意味着您正在尝试从(或到)具有 ASCII 的字符流:EXTERNAL-FORMAT。默认值在-Edomain 编码中描述。
这也可能是由文件系统访问引起的。如果您的文件名称与您的CUSTOM:*PATHNAME-ENCODING*文件系统访问权限(例如DIRECTORY)不兼容,则SIGNAL该ERROR. 您需要设置CUSTOM:*PATHNAME-ENCODING*或传递-Edomain encoding给 CLISP。使用 \xe2\x80\x9c1:1\xe2\x80\x9d 编码(例如CHARSET:ISO-8859-1)应该可以帮助您避免此错误。
请参阅官方网站以获取完整文档。
\n\n\n\n聚苯硫醚。您的代码(list \'(...) \'(...) ...)看起来很奇怪,您可能想将其替换为\'((...) (...) ...). 我的意思是,你的作品也一样,只是风格很糟糕。