【问题标题】:UTF 8 byte length of a string in microsoft excelMicrosoft excel中字符串的UTF 8字节长度
【发布时间】:2016-02-12 04:00:36
【问题描述】:

我正在尝试为字符串长度在 8 到 16 之间且最大字节长度小于 40(UTF8 编码)添加单元格数据验证。

我使用 excel 主动支持创建了一个数据验证:
数据验证(数据选项卡 -> 数据验证(在 excel 2016 mac 中删除重复项和合并之间)),在设置选项卡中,有验证

criteria:
Validation Criteria:
Allow: Text Length
Data : between
Min : 8 & Max : 16

虽然上述验证满足我所有的限制(8

对于其他语言(比如日语),虽然字符串长度是通过物理长度计算的(例如:"こんにちはこんにちはこんにちは",日语中的hellohellohello),但UTF8字节值为45字节,违反了40字节,以为长度只有15。

我在 excel 中找到了“LENB”函数,但它给出的值是 30(而不是 45)。我认为它基于不同的编码(可能是ansi)

在上述情况下,我找到了 UNICODE 函数,它给出了第一个字符 (12371) 的 unicode 编号。但我不知道如何从这个数字中获取字节值(3 个字节是第一个字符的值(こ))。

在这方面的任何帮助将不胜感激。

【问题讨论】:

    标签: excel validation unicode utf-8


    【解决方案1】:

    我遇到了同样的问题,这里是没有 VBA 的解决方案,基于上面的答案 + this 文章。假设您在 A1 中有一个字符串:

    =SUM(
        IF(UNICODE(MID(A1,ROW(INDIRECT("1:"&LEN(A1))),1))<128, 1,
        IF(UNICODE(MID(A1,ROW(INDIRECT("1:"&LEN(A1))),1))<2048, 2,
        IF(UNICODE(MID(A1,ROW(INDIRECT("1:"&LEN(A1))),1))<65536, 3, 4
    ))))
    

    离开单元格时不要忘记使用数组函数(CTRL+SHIFT+ENTER):)

    【讨论】:

      【解决方案2】:

      使用 Unicode 值,您可以计算一个特定的字节将占用多少字节。

      【讨论】:

      • 有没有办法为单元格中的整个字符串获取这个?就像 excel 中的循环(不是在 VBA 中)。
      • @tharunreddych,我不知道。我会写一个 VBA 函数。
      猜你喜欢
      • 2014-05-09
      • 1970-01-01
      • 1970-01-01
      • 2011-10-06
      • 1970-01-01
      • 2012-01-20
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多