写点什么

Jchardet——支持检测并输出文件编码方式的组件

  • 2022-10-12
    上海
  • 本文字数:1012 字

    阅读完需:约 3 分钟

Jchardet——支持检测并输出文件编码方式的组件

简介

Jchardet 是 OpenAtom OpenHarmony(以下简称“OpenHarmony”)系统的一款检测文本编码的组件。当上传一个文件时,组件可以检测并输出该文件中文本使用的编码方式。

支持的编码格式有:ASCII 编码、UTF-8 编码、UTF-16LE 编码、Shift-JIS 编码、ISO-2022-JP 编码、ISO-2022-CN 编码、ISO-2022-KR 编码、Big5编码、UTF-16BE 编码、x-euc-tw 编码、EUC-KR 编码、ECU-JP 编码、GB18030 编码、HZ-GB-2312 编码、Windows-1252 编码、GB2312 编码。



开发环境

安装 IDE:支持 DevEco Studio 3.0 Release(Build Version 3.0.0.993)版本。

安装 SDK:OpenHarmony API version 8 及以上版本。

使用方法

需要先配置 OpenHarmony npm 仓,请参考安装教程

https://gitee.com/openharmony-tpc/docs/blob/master/OpenHarmony_npm_usage.md

1. 下载 jchardet 组件


npm install @ohos/jchardet –-save
复制代码


2. 在 page 页面导入。


import {nsICharsetDetectionObserver,nsDetector,nsPSMDetector} from '@ohos/jchardet/
复制代码


3. 初始化编码检测器。


//lang为输入的语言种类    //0 => All    //1 => Japanese    //2 => Chinese    //3 => Simplified Chinese    //4 => Traditional Chinese    //5 => Korean    //6 => Dont know (default)let det: nsDetector = new nsDetector(lang); 
复制代码


4. 在检测器的初始化函数中定义回调函数,接受编码检测结果。


det.Init(new class implements nsICharsetDetectionObserver {          Notify(charset: string): void {          console.log("CHARSET = " + charset);          } })
复制代码


4.1 向编码检测器提供数据,首选判断是否 Ascii 编码,如果是 Ascii 编码,则程序结束。


let byteData = new Int8Array(buf); //buf为文件的ArrayBufferlet isAscii:boolean = det.isAscii(byteData);
复制代码


4.2 如果检测到某一种编码,则进去初始化时定义的回调,程序结束。


let done:boolean = det.DoIt(byteData, false);
复制代码


4.3 如果检测到多种编码,则获取编码列表,程序结束。


let prob: Array<string> = det.getProbableCharsets();
复制代码


结语

通过本篇文章介绍,您对 OpenHarmony Jchardet 组件应该有了初步的了解。我们所有的源码和指导文档都已经开源,如果您对本篇文章内容以及所实现的 Demo 感兴趣,可以根据本篇文章介绍自行下载 OpenHarmony Jchardet 源码(https://gitee.com/openharmony-sig/jchardet)进行研究和使用。同时也欢迎更多开发者与我们共享开发成果,分享技术解读与经验心得。



用户头像

OpenHarmony开发者官方账号 2021-12-15 加入

OpenHarmony是由开放原子开源基金会(OpenAtom Foundation)孵化及运营的开源项目,目标是面向全场景、全连接、全智能时代,基于开源的方式,搭建一个智能终端设备操作系统的框架和平台,促进万物互联产业的繁荣发展

评论

发布
暂无评论
Jchardet——支持检测并输出文件编码方式的组件_OpenHarmony_OpenHarmony开发者社区_InfoQ写作社区