perl - How does Perl's length() function counts unicode characters?
问题描述
Why length() says this is 4 logical characters (I would expect it to say 1):
$ perl -lwe 'print length("")'
4
I guess something is wrong with my expectation. :-) What is it?
解决方案
除非你告诉 Perl 脚本的源代码是 utf8,否则 Perl 假定 ASCII。这意味着默认情况下 Perl 解释器将其视为 4 个单独的字符。如果您将一个衬里更改为
perl -Mutf8 -lwe 'print length("")'
You see length 提供您的预期输出。
utf8 pragma 告诉 Perl 源单元是 utf8 而不是 ASCII 。有关perldoc utf8
更多信息,请参阅。
推荐阅读
- ruby-on-rails - 在 Ruby on rails 5 上运行测试时出现未初始化的常量错误
- angular - 在角度 8 ng add ng-zorro-antd 中使用 cli 添加 ng-zorro-antd 时出现错误
- python - 为什么'if not'检查python中的空字符串
- javascript - 使用nodejs wrapper(compile-run)来运行cpp代码是否可行?
- python - 如何正确导入python中不同文件中定义的常量
- javascript - TradingView 图表不显示
- xslt - 获取节点的位置将其用作 XSLT 中的属性值
- c - 为什么 scanf 在扫描整数时需要 & 而在扫描字符串时不需要?
- python - pyodbc.OperationalError: ('HYT00', u'[HYT00] [unixODBC][Microsoft][ODBC Driver 17 for SQL Server]登录超时已过期 (0) (SQLDriverConnect)')
- python-3.x - 为什么这个错误:AttributeError:'NoneType'对象没有属性'iterrows'