关于UTF-8

    Unicode编码中,19968-40869为汉字:

 

摘自一部分:

&#19968-19978一丁丂七丄丅丆万丈三
&#19978-19988上下丌不与丏丐丑丒专
&#19988-19998且丕世丗丘丙业丛东丝
&#19998-20008丞丟丠両丢丣两严並丧
&#20008-20018丨丩个丫丬中丮丯丰丱
&#20018-20028串丳临丵丶丷丸丹为主
&#20028-20038丼丽举丿乀乁乂乃乄久
&#20038-20048乆乇么义乊之乌乍乎乏
&#20048-20058乐乑乒乓乔乕乖乗乘乙

 

 

得到某汉字的编码:

String str = "黎明你好";
for(int j=0; j<str.length(); j++){
	char temp = str.charAt(j);
	System.out.print( "&#" + (int)temp);
}

输出结果:&#40654&#26126&#20320&#22909

把他保存成html,就可以显示汉字。

 

微软word转的mht文件,有的时候title不对,用工具打开直接改title,改完肯定是乱码。

用上面的代码找到他的Unicode编码,copy进去,OK了。

 

 

 

 

### 在 LabVIEW 中实现 UTF-8 转换为 Unicode 的使用案例 在 LabVIEW 中处理 UTF-8 编码的字符串并将其转换为 Unicode(宽字符)格式,通常需要调用 Windows API 中的 `MultiByteToWideChar` 函数。该函数位于 `kernel32.dll` 中,支持将多字节字符串转换为宽字符字符串,适用于处理 UTF-8 编码的外部数据源,例如数据库、网络通信或文本文件[^1]。 #### 函数原型 ```c int MultiByteToWideChar( UINT CodePage, DWORD dwFlags, LPCSTR lpMultiByteStr, int cbMultiByte, LPWSTR lpWideCharStr, int cchWideChar ); ``` - `CodePage`:指定字符集的代码页,UTF-8 使用 `CP_UTF8`(值为 65001)。 - `dwFlags`:标志位,通常设为 0。 - `lpMultiByteStr`:输入的 UTF-8 字符串。 - `cbMultiByte`:字符串长度(以字节为单位),若为 -1 表示自动计算长度。 - `lpWideCharStr`:输出的宽字符缓冲区。 - `cchWideChar`:缓冲区大小。 #### LabVIEW 实现步骤 1. 使用 **Call Library Function Node** 调用 `kernel32.dll` 中的 `MultiByteToWideChar`。 2. 第一次调用用于获取所需缓冲区大小(`lpWideCharStr` 设为 `NULL`)。 3. 分配相应大小的缓冲区。 4. 第二次调用执行实际转换。 #### 示例代码(Call Library Function Node 配置) ```labview Call Library Function Node - Library Name: kernel32.dll - Function Name: MultiByteToWideChar - Parameters: - UINT CodePage: 65001 (CP_UTF8) - DWORD dwFlags: 0 - LPCSTR lpMultiByteStr: 输入的 UTF-8 字符串 - int cbMultiByte: -1 (自动计算长度) - LPWSTR lpWideCharStr: NULL (第一次调用) - int cchWideChar: 0 (第一次调用) - Return Type: Integer (32-bit) ``` 根据返回值分配缓冲区后,再次调用函数执行转换: ```labview Call Library Function Node - Library Name: kernel32.dll - Function Name: MultiByteToWideChar - Parameters: - UINT CodePage: 65001 (CP_UTF8) - DWORD dwFlags: 0 - LPCSTR lpMultiByteStr: 输入的 UTF-8 字符串 - int cbMultiByte: -1 - LPWSTR lpWideCharStr: 分配的缓冲区 - int cchWideChar: 上一步返回的缓冲区大小 - Return Type: Integer (32-bit) ``` #### LabVIEW 中的字符串处理建议 - 在调用 Unicode 版本的 API 时,确保输入字符串为 UTF-8 格式。 - 使用 **Call Library Function Node** 时,字符串类型应设置为 `C String`(以 NULL 结尾)。 - 对于输出缓冲区,可使用 **Array of Characters** 类型并根据返回长度截取有效部分。 - 转换完成后,可将宽字符数组转换为 LabVIEW 的字符串类型进行后续处理。 --- ### 示例:UTF-8Unicode 的 LabVIEW 逻辑流程 1. 输入 UTF-8 字符串并获取其字节长度。 2. 调用 `MultiByteToWideChar` 获取所需缓冲区大小。 3. 创建相应大小的缓冲区(宽字符数组)。 4. 再次调用 `MultiByteToWideChar` 执行转换。 5. 将结果转换为 LabVIEW 字符串并输出。 --- ### 注意事项 - 调用 `MultiByteToWideChar` 时,确保 `lpMultiByteStr` 是以 NULL 结尾的字符串。 - 若输入数据以 NULL 结尾,需手动指定长度。 - 转换后的 Unicode 字符串需使用宽字符类型(`wchar_t`)存储。 - LabVIEW 中的字符串默认为 ANSI 编码,处理 Unicode 时需使用宽字符 API。 --- ### 示例代码(LabVIEW 调用逻辑伪代码) ```c int nBufferSize = MultiByteToWideChar(CP_UTF8, 0, (LPCSTR)utf8String, -1, NULL, 0); wchar_t *pBuffer = new wchar_t[nBufferSize]; MultiByteToWideChar(CP_UTF8, 0, (LPCSTR)utf8String, -1, pBuffer, nBufferSize); ``` --- ###
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
红包 添加红包
表情包 插入表情
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值