获取Excel或OfficeCalc中字符串的Unicode(USC-2)值

时间:2016-10-31 11:41:52

标签: excel unicode openoffice-calc

我正在尝试使用API​​进行消息传递。对于我的特定应用程序,我需要在使用API​​之前获取所有字符的USC-2值。 请告诉我们如何获取给定字符串的所有字符的USC-2值。对于我的应用程序,我将在电子表格的单元格中键入我的字符串,并希望在我键入时在另一个单元格中看到该字符串的USC-2值。

示例:如果我在一个单元格中输入“नमस्ते”,我应该在另一个单元格中输出“0928 092E 0938 094D 0924 0947”。

在excel和OfficeCalc中有一个函数“UNICODE”,它执行类似的操作,但它仅适用于字符串的第一个字符。我想将整个字符串转换为4位Unicode值。

API Link - 第6页 - 第6.2节

2 个答案:

答案 0 :(得分:1)

没有宏的唯一解决方案是使用辅助单元。

实施例

enter image description here

公式:

B1

=MID($A1,COLUMN(A1),1)

复制到右边,直到结果为空。

B2

=DEC2HEX(UNICODE(B1),4)

复制到右边,直到出现#VALUE错误。

B3

=B2

C3

=B3&C2

复制到右边,直到出现#VALUE错误。

使用以下用户定义的功能(Excel VBA),可以使用

实现
=ucscode(A1)

在一个单元格内。

功能:

Public Function ucscode(s As String) As String
 For i = 1 To Len(s)
  ucscode = ucscode & Application.Dec2Hex(AscW(Mid(s, i, 1)), 4)
 Next
End Function

使用Openoffice Calc,公式解决方案与Excel相同。当然错误是Err:504而不是#VALUE。

使用starbasic的用户定义函数可以是:

Public Function ucscode(s As String) As String
 Dim sresult as String
 For i = 1 To Len(s)
  sresult = sresult & right("0000" & hex(asc(mid(s, i,1))), 4)
 Next
 ucscode = sresult
End Function

答案 1 :(得分:1)

我的答案与@Axel Richter的相似:

  1. 在单元格B1中,输入=IF(LEN($A$1)>=ROW(),DEC2HEX(UNICODE(MID($A$1,ROW(),1)),4),"")
  2. 将此公式填入B30行。
  3. 在单元格C1中,输入公式=CONCATENATE(B1,B2,B3,B4,B5,B6,B7,B8,B9,B10,B11,B12,B13,B14,B15,B16,B17,B18,B19,B20,B21,B22,B23,B24,B25,B26,B27,B28,B29,B30)
  4. 现在输入要在单元格A1中转换的字符串。它最多可以使用30个字符。

    calc sheet formulas

    请记住,在最新版本的LibreOffice(以及我认为的Excel)中,您可以按 Alt + x 查看字符的Unicode值。

    当然,在Perl中这会更容易。