TL;DR:(简而言之):
如何使这个工作?'йцу'是不属于拉丁字符集的字符,显然;有没有一种方法告诉re模块或整个系统使用不同的字符集来运行“字符串”? 原始问题(仅供记录): 在第16章中,有一个关于从mp3文件中读取标签的示例。它很好用。但是,提供的模块lib_find中似乎存在一些bug,其中有一个函数用于在路径中搜索匹配的文件。这是有效的调用:
25> re:run("йцу.asd", xmerl_regexp:sh_to_awk("*.*"), [{capture, none}]).
** exception error: bad argument
in function re:run/3
called as re:run([1081,1094,1091,46,97,115,100],
"^(.*\\..*)$",
[{capture,none}])
如何使这个工作?'йцу'是不属于拉丁字符集的字符,显然;有没有一种方法告诉re模块或整个系统使用不同的字符集来运行“字符串”? 原始问题(仅供记录): 在第16章中,有一个关于从mp3文件中读取标签的示例。它很好用。但是,提供的模块lib_find中似乎存在一些bug,其中有一个函数用于在路径中搜索匹配的文件。这是有效的调用:
61> lib_find:files("../..", "*.mp3", true).
["../../early/files/Veronique.mp3"]
并且这个调用失败:
62> lib_find:files("../../..", "*.mp3", true).
** exception error: bad argument
in function re:run/3
called as re:run([46,46,47,46,46,47,46,46,47,46,107,101,114,108,47,98,117,
105,108,100,115,47,50,48,46,49,47,111|...],
"^(.*\\.mp3)$",
[{capture,none}])
in call from lib_find:find_files/6 (lib_find.erl, line 29)
in call from lib_find:find_files/6 (lib_find.erl, line 39)
in call from lib_find:files/3 (lib_find.erl, line 17)
具有讽刺意味的是,调查结果发现了Erlang自己安装的问题所在:
.kerl/builds/20.1/otp_src_20.1/lib/ssh/test/ssh_sftp_SUITE_data/sftp_tar_test_data_高兴
好吧,这似乎意味着Erlang使用了更为严格的默认字符集,其中不包括汉字。有哪些选择?显然,我可以忽略它并继续学习,但我觉得我可以从中学到更多 =)例如,我在哪里/如何修复默认字符集?我有点惊讶它默认使用的不是UTF8 - 所以也许我走错了路线?
谢谢!