首页 > 其他分享 >Jchardet——支持检测并输出文件编码方式的组件

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

时间:2022-10-12 11:26:17浏览次数:49  
标签:OpenHarmony 编码 Jchardet det let 组件 编码方式

 

简介

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为文件的ArrayBuffer
let 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,编码,Jchardet,det,let,组件,编码方式
From: https://www.cnblogs.com/openharmony/p/16783841.html

相关文章

  • 即用型UI组件库Kendo UI R3 2022,让应用主题开发更容易
    KendoUI是带有 jQuery、Angular、React和Vue库的JavaScriptUI组件的最终集合,无论选择哪种JavaScript框架,都可以快速构建高性能响应式Web应用程序。通过可自定义的UI组件......
  • 817. 链表组件
    817.链表组件给定链表头结点 head,该链表上的每个结点都有一个唯一的整型值。同时给定列表 nums,该列表是上述链表中整型值的一个子集。返回列表 nums 中组件的......
  • Vue里面父组件嵌套子组件的生命周期
     最常见的4种状态1.Creation2.Mounting3.Updating4.Unmouting 通常create用来放API的如果是在Mount是挂载后操作DOM的   我们搞清楚他的生命周期顺序,父......
  • 好用的组件收藏
    播放器播放条斗鱼、Youtobe等https://web-streaming.github.io/ppbar/使用使用ppbar,需要导入ProgressBar类和ppbar的样式。importProgressBarfrom'ppbar';......
  • 公共组件的显示与隐藏
     Footer组件显示与隐藏显示或者隐藏组件:v-if|v-showFooter组件:在Home,Search显示Footer组件Footer组件:在登陆,注册时候隐藏的 1.我们可以根据组件身上的$route......
  • 使用element ui的el-upload组件上传图片,记录一下
    使用elementui的el-upload组件上传图片效果预览下面是实现效果,接口方面是把有两个接口,一个接口上传图片,传参是图片和路径,返回值是路径。另一个接口是上传表单内容(用户,......
  • Vu3.x如何给v-for循环出来的输入框绑定v-mode的值,以及实现父子组件传值、双向绑定
    观前须知:本人演示使用的input是自己手敲的,如果使用的是element-ui等表单组建的input框请选择性参考,不保证我的方法对你们也完全有效。父组件代码:这里我的MiniInput是以组......
  • 为 element-plus 的图标组件设置圆形背景
    实现思路element-plus中的图标都是单个的组件,需要配合el-icon组件一起使用。但这两类组件都没有自带的圆形背景,因此引入el-tag组件作为el-icon组件的容器。el-tag......
  • 006 组件的生命周期
    [A]生命周期1.React中提供了一下钩子函数,也叫生命周期函数2.这些钩子函数与render方法并列(render也属于一种生命周期函数·),直接写成xxx(){}形式即可 ......
  • 30 Django分页组件
    pager.py:"""如果想要使用分页,需要以下两个步骤defxxx():queryset=models.Customer.objects.filter(active=1).select_related('level','creator')#select......