小说软件开发,java获取文本文件的编码格式

小说软件开发,java获取文本文件的编码格式实现的相关代码

1
/**<br>     * 获取文件的编码格式<br>     * @param file<br>     * @return<br>     */<br>    public String GetCharset(File file) {<br>        String charset = "GBK";<br>        byte[] first3Bytes = new byte[3];<br>        try {<br>            boolean checked = false;<br>            //BufferedInputStream bis = new BufferedInputStream(<br>            //new FileInputStream(file));<br>            //bis.mark(0);<br>            //int read = bis.read(first3Bytes, 0, 3);<br>            InputStream is = new FileInputStream(file);<br>            int read = is.read(first3Bytes, 0, 3);<br> <br>            if (read == -1)<br>                return charset;<br>            //Log.i(TAG,"[GetCharset]first3Bytes[0]:"+first3Bytes[0]+", first3Bytes[1]:"+first3Bytes[1]+",first3Bytes[2]:"+first3Bytes[2]);<br>            if (first3Bytes[0] == (byte) 0xFF && first3Bytes[1] == (byte) 0xFE) {<br>                charset = "UTF-16LE";<br>                checked = true;<br>            } else if (first3Bytes[0] == (byte) 0xFE<br>                    && first3Bytes[1] == (byte) 0xFF) {<br>                charset = "UTF-16BE";<br>                checked = true;<br>            } else if (first3Bytes[0] == (byte) 0xEF<br>                    && first3Bytes[1] == (byte) 0xBB<br>                    && first3Bytes[2] == (byte) 0xBF) {<br>                charset = "UTF-8";<br>                checked = true;<br>            }else if (first3Bytes[0] == (byte) 0xA<br>                    && first3Bytes[1] == (byte) 0x5B<br>                    && first3Bytes[2] == (byte) 0x30) {<br>                charset = "UTF-8";<br>                checked = true;<br>            }else if (first3Bytes[0] == (byte) 0xD<br>                    && first3Bytes[1] == (byte) 0xA<br>                    && first3Bytes[2] == (byte) 0x5B) {<br>                charset = "GBK";<br>                checked = true;<br>            }else if (first3Bytes[0] == (byte) 0x5B<br>                    && first3Bytes[1] == (byte) 0x54<br>                    && first3Bytes[2] == (byte) 0x49) {<br>                charset = "windows-1251";<br>                checked = true;<br>            }<br>            //bis.reset();<br>            InputStream istmp = new FileInputStream(file);<br>            if (!checked) {<br>                int loc = 0;<br>                while ((read = istmp.read()) != -1) {<br>                    loc++;<br>                    if (read >= 0xF0)<br>                        break;<br>                    if (0x80 <= read && read <= 0xBF)<br>                        break;<br>                    if (0xC0 <= read && read <= 0xDF) {<br>                        read = istmp.read();<br>                        if (0x80 <= read && read <= 0xBF)<br>                            continue;<br>                        else<br>                            break;<br>                    } else if (0xE0 <= read && read <= 0xEF) {<br>                        read = istmp.read();<br>                        if (0x80 <= read && read <= 0xBF) {<br>                            read = istmp.read();<br>                            if (0x80 <= read && read <= 0xBF) {<br>                                charset = "UTF-8";<br>                                break;<br>                            } else<br>                                break;<br>                        } else<br>                            break;<br>                    }<br>                }<br>            }<br>            is.close();<br>            istmp.close();<br>        } catch (Exception e) {<br>            e.printStackTrace();<br>        }<br>        return charset;<br>    }

​    以上就是 小说软件开发,java获取文本文件的编码格式实现的相关代码,更多内容欢迎关注之后的文章

 

posted @   云豹科技-苏凌霄  阅读(68)  评论(0编辑  收藏  举报
编辑推荐:
· AI与.NET技术实操系列:基于图像分类模型对图像进行分类
· go语言实现终端里的倒计时
· 如何编写易于单元测试的代码
· 10年+ .NET Coder 心语,封装的思维:从隐藏、稳定开始理解其本质意义
· .NET Core 中如何实现缓存的预热?
阅读排行:
· 分享一个免费、快速、无限量使用的满血 DeepSeek R1 模型,支持深度思考和联网搜索!
· 基于 Docker 搭建 FRP 内网穿透开源项目(很简单哒)
· ollama系列01:轻松3步本地部署deepseek,普通电脑可用
· 25岁的心里话
· 按钮权限的设计及实现
点击右上角即可分享
微信分享提示