【问题标题】:Strange behavior with special characters in Core.Std (ocaml)Core.Std(ocaml)中特殊字符的奇怪行为
【发布时间】:2014-04-26 21:05:20
【问题描述】:

我是 ocaml 的新手,不知道为什么:(命令行解释器 OCaml 版本 4.01.0)

# open Core.Std;;
# String.lowercase "a";;
- : Core.Std.String.t = "a"
# String.lowercase("è");;
- : Core.Std.String.t = "�"
# String.lowercase "ò";;
- : Core.Std.String.t = "�"

一样!但使用普通字符:

# (=) "a" (String.lowercase "a");;
- : bool = true

显然:

# (=) "è" (String.lowercase "è");;
- : bool = false

有人可以解释这种行为吗?

谢谢

【问题讨论】:

  • 请提出一个问题。不清楚你在问什么。

标签: string ocaml special-characters


【解决方案1】:

这当然是因为您的终端是 UTF-8 编码的,即您输入的字符串是 UTF-8 编码的。然而,String 模块中的函数(至少在官方标准库中)只对 latin1 (ISO-8859-1) 编码的字符串起作用。所以你不能指望它们能处理 UTF-8 编码的字符串。

这应该很容易检查:

String.length "é" 

如果这不是 1 而是 2,则表示您输入的是 UTF-8 编码字符串。

【讨论】:

  • 谢谢,将终端设置为 Latin-1 就可以了。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 2019-08-22
  • 1970-01-01
  • 2011-01-16
  • 2014-12-31
  • 1970-01-01
  • 2012-04-08
  • 1970-01-01
相关资源
最近更新 更多