精华内容
下载资源
问答
  • JAVA中读取文件乱码的解决办法
    2021-02-28 17:03:34

    public static String encodin = "UTF8"

    public static String encodout = "UTF8"

    static void writeOutput(String str) {

    try {

    FileOutputStream fos = new FileOutputStream("test.txt");

    Writer out = new OutputStreamWriter(fos, encodout);

    out.write(str);

    out.close();

    } catch (IOException e) {

    e.printStackTrace();

    }

    }

    static String readInput() {

    StringBuffer buffer = new StringBuffer();

    try {

    FileInputStream fis = new FileInputStream("test.txt");

    InputStreamReader isr = new InputStreamReader(fis, encodin);

    Reader in = new BufferedReader(isr);

    int ch;

    while ((ch = in.read()) > -1) {

    buffer.append((char)ch);

    }

    in.close();

    return buffer.toString();

    } catch (IOException e) {

    e.printStackTrace();

    return null;

    }

    }

    更多相关内容
  • Filefile=newFile("D:/Users/yao/Desktop/test/2.rec");if(file.exists()){try{FileInputStreamin=newFileInputStream(file);DataInputStreamdis=newDataInputStream(in);byte[]itemB...File file = new File("D:/Us...

    Filefile=newFile("D:/Users/yao/Desktop/test/2.rec");if(file.exists()){try{FileInputStreamin=newFileInputStream(file);DataInputStreamdis=newDataInputStream(in);byte[]itemB...

    File file = new File("D:/Users/yao/Desktop/test/2.rec");

    if(file.exists()){

    try {

    FileInputStream in = new FileInputStream(file);

    DataInputStream dis=new DataInputStream(in);

    byte[] itemBuf = new byte[20];

    //市场编码

    dis.read(itemBuf, 0, 8);

    String marketID =new String(itemBuf,0,8);

    //市场名称

    dis.read(itemBuf, 0, 20);//read方法读取一定长度之后,被读取的数据就从流中去掉了,所以下次读取仍然从 0开始

    String marketName =new String(itemBuf,0,20);

    //上一交易日日期

    dis.read(itemBuf, 0, 8);

    String lastTradingDay = new String(itemBuf,0,8);

    //当前交易日日期

    dis.read(itemBuf, 0, 8);

    String curTradingDay = new String(itemBuf,0,8);

    //交易状态

    dis.read(itemBuf, 0, 1);

    String marketStatus = new String(itemBuf,0,1);

    //交易时段数

    // short tradePeriodNum = dis.readShort();

    System.out.println("市场代码:"+ marketID);

    System.out.println("市场名称:"+ marketName);

    System.out.println("上一交易日日期:"+ lastTradingDay);

    System.out.println("当前交易日日期:"+ curTradingDay);

    System.out.println("当前交易日日期:"+ curTradingDay);

    System.out.println("交易状态:"+ marketStatus);

    // System.out.println("交易时段数:"+ tradePeriodNum);

    } catch (IOException e) {

    // TODO Auto-generated catch block

    e.printStackTrace();

    }finally{

    //close

    }

    }

    展开

    展开全文
  • java乱码解决方法:解决方式1(若乱码参数多,就比较低效)浏览器默认编码为ISO-8859-1,后端Servlet接收请求参数,按照ISO-8859-1进行解码,得到二进制流,然后再用UTF-8编码。示例代码:// 获得请求参数String ...

    c1b1d28e9e5dfb4b59f2c74157991a49.png

    java乱码解决方法:

    解决方式1(若乱码参数多,就比较低效)

    浏览器默认编码为ISO-8859-1,后端Servlet接收请求参数,按照ISO-8859-1进行解码,得到二进制流,然后再用UTF-8编码。

    示例代码:// 获得请求参数

    String queryString = request.getQueryString();

    // 按照ISO-8859-1方式解码

    byte[] bytes = queryString.getBytes("ISO-8859-1");

    // 按照UTF-8编码

    String param = new String(bytes,"UTF-8");

    解决方式2(此种方式只支持get方式请求)

    修改服务器(tomcat)配置:在server.xml中,默认为ISO-8859-1(没有显示出来),我们可以添加上UTF-8

    eb7a87965ab181bf2e17c1e51b225ad4.png

    解决方式3(此种方式只支持post方式请求)

    在servlet直接设置请求参数编码--推荐//设置请求参数编码

    request.setCharacterEncoding("UTF-8");

    如果post和get同时出现乱码,结合方式2和方式三使用

    响应乱码--响应// 设置MIME类型

    response.setContentType("text/html");

    // 设置编码

    response.setCharacterEncoding("UTF-8");

    //设置编码(简写)

    response.setContentType("text/html;charset=utf-8");

    更多java知识请关注java基础教程栏目。

    展开全文
  • 深入解析java乱码

    2021-03-06 21:52:16
    大家都知道,文本文件,存储在硬盘上,都是一串二进制 ,01的组合,它本身是不携带不论什么,哪怕一丁点,信息告诉文本编辑器 hi哥们儿,我是GBK编码,我是UTF-8编码,我是。。。。。。。它很easy,就是01的组合,他...

    1.什么是编码 ,为什么要编码

    先前从没有思考这么深入的问题,觉得一切理所当然,直到有一天java的乱码让我跪了,他不在听我的话,到处是乱码,这次我不打算放过它,我要收拾了它。

    大家都知道,文本文件,存储在硬盘上,都是一串二进制  ,01的组合,它本身是不携带不论什么,哪怕一丁点,信息告诉文本编辑器 hi哥们儿,我是GBK编码,我是UTF-8编

    码,我是。。。。。。。

    它很easy,就是01的组合,他不知道自己是什么,所以我们仅仅有知道他是什么然后才干正确的编辑合适用它,首先看个小样例。

    b401a874578a94ad2e7c0f8cbb7e0dfa.png

    这是一个文本文件,他的二进制形式就是一串01

    当我我用的终端的编码是GBK显示时(第一次)

    当我用UTF-8时(第二次)

    他就是这么简单 有是这么无常,非常幸运,这一串01不管是在GBK编码,还是在UTF-8中都是有效字符也就是说按UTF-8的编码规则它代表

    ”汉“   而假设依照GBK编码规则来解析呢他又是    ” 姹 “  ,这就是根源了,编码和解码用的不是一种码。所以大多数情况下你都搞不懂 好端端的文档怎么就乱了码。 这就是需

    要编码的原因了。 二进制文件一串01电脑认得可是对他来说就是01没有意义。所以要把它翻译成大家能识别的东西。一种编码编码在我看来就是一种映射, 也就是向刚才所说

    的GBK环

    境下 它映射成一种东西,UTF-8,环境下它映射成还有一种东西,可是本质他俩有是一个东西,那客官又问了 ,明明再UTF-8和GBK环境下都一样,比方说a,这就说的到了,编

    码与编码之间的兼容问题了,

    想探索的朋友自己能够探索下,各个编码的规则及兼容性,这里就不多说了。

    2. 上手编码

    写java文件,就先来个helloworld

    e04551853ddf2e3cd05fc4698cbf23b8.png

    这是同一个文件 我在不同编码环境下查看,看到的东西是不一样的我的系统是Ubuntu 12.04 默认编码UTF-8  但是提前声明,我这个文件但是GBK编码的所以以GBK形式的编

    码查看才有意义,张三 又立了功,下边来编译我的这个HelloWorld 文件,看看有什吗奇迹?

    7345caaf75eb481ce6ae52d23f1f9c96.png

    我去,不活啦 helloWorld 都搞不定,这都能出错,这日子没法过了。只是别着急,看错误, 这个字符(当然这里不是张三代表的字符找不到,而是再GBK里代表张三的0101

    二进制串在UTF-8里找不到映射所以它没法解析,大家能够了解一下UTF-8的编码规则)UTF-8里找不着,没错  找不着就对了,你不是一次编译到处执行吗?编译都过不去怎么

    搞,别着急 javac 里有一个參数,-encoding       Specify character encoding used by source files  也就是说你告诉javac 你这个java源文件是什么样的编码,你别给

    搞错了,你要是搞错了,幸运的,编译只是去告诉你哪里有问题,要是不幸的      汉  就变成了    姹 啦 想想就可怕   所以不报错并不代表程序没有问题 ,不信你试试,我刚才说

    过,我的系统默认是UTF-8 所以没有编译过去这个是GBK编码的源文件,大多数人用的还是windows,并且又安装了中文语言包,所以默认编码大都GBK所以也就行正常编译

    GBK编码的源文件,所以一般没有问题,但大多数程序终于上线执行的环境但是linux啊 ,全部大家设置虚拟机參数是-Dfile.encoding=GBK 这个是谁也不敢偷懒的。

    (只是这里说这个还有点早)

    cf80ac4797bb51375834301323222ceb.png

    当我加上这个參数 编译顺利通过。

    感觉到非常神圣,执行我的helloWord

    UTF-8环境下为

    86ae7904d74000815f3eba925d31c326.png

    好兴奋啊  最终出来了

    GBK环境下执行(这是大多数产生乱码的原因)

    69321385d49e30284a41434195afe563.png

    这不科学,怎么又乱了 神啊

    大家肯定没有忘 java的class文件是什么编码的啊 Unicode对吧 所以张三这个字符串 所以编译完了 ,他就不是GBK了 全部的无论是什么编码的源文件,变成class文件编码都一样,你没告诉JVM使用什么编码,所以它默认UTF-8,所以张三被解析成UTF-8编码相应的一串二进制,但你的输出环境又是GBK所以。。。。

    所以我老老实实的加上了 (这个命令行环境仍然是GBK)

    8002f6855e7e80caeb66818f4e0fc8ba.png

    System.out中的这个out是什么?PrintStream  是个输出流啊(默认是流向控制台当然你可已通过 System.setOut(PrintStream out)来让他流向别处,比方文本,然后用editplus打

    开看下,通过设置不同的解码,来看不同的显示,当然不是必需这样)  打印到控制台,这个流你打算以什么编码来展示它,GBK环境下肯定是以GBK的形式展示吧,但是第一次是乱码为

    什么,JVM是这样想

    得,我有一个Unicode编码的张三在这里,我在说一下我的系统UTF-8在我没告诉JVM以什么编码规则编码时,它肯定使用UTF-8来编 你就会得到一个输入流 这个输入流是一串

    00111二进制代表UTF-8下的张三,而到了输出到屏幕这里 屏幕(这里就是输出流流向的地方)不吃这一套 这一串00001111不代表张三,代表上边的那三个我也不太认识的字

    (汗颜啊),所以咱得告诉虚拟

    机,我要的张三是GBK编码的张三,我要的一串二进制相应GBK里的张三,所以加上个这个就好了。先写到这里吧!再晚赶不上二路汽车了。

    下次再写个关于IO的编码的那个我感觉比这个简单点。(配合学习java的一些和编码相关的类效果更加)

    先写到这里 ,祝大家 国庆节玩好。不要忘了 撸两行代码 怡怡情,由于几天不见,她没准就把你忘了。

    展开全文
  • 主要介绍了java读取图片并转化为二进制字符串的实例代码,非常不错,具有一定的参考借鉴价值,需要的朋友可以参考下
  • java udp接收16进制乱码

    2021-04-17 05:50:48
    java udp接收16进制乱码[2021-01-30 09:27:24]简介:php去除nbsp的方法:首先创建一个PHP代码示例文件;然后通过“preg_replace("/(\s|\&nbsp\;| |\xc2\xa0)/", " ", strip_tags($val));”方法去除所有nbsp即可...
  • } } 二进制数据下载 @SuppressWarnings("finally") public static boolean download(byte[] bytes, String fileName, HttpServletRequest request, HttpServletResponse response) throws IOException { ...
  • 引入:文件可以分为你两种类型进行存储,一是以文本的格式存储,其他的都是以二进制的方式进行存储的,比如:(100100001111).在文本的读取中,我们有Scanner和PrintWriter方法中文本中读入和写出数据。读取文本数据...
  • 该楼层疑似违规已被系统折叠隐藏此楼...import java.io.File;import java.io.FileInputStream;import java.io.FileOutputStream;import java.io.InputStream;import java.io.OutputStream;public class TestFileto2...
  • java 16进制转中文乱码

    2021-02-02 18:25:57
    将utf-8改为GBK即可 public static String hexStr2Str(String hex) { String hexStr = "";... //16进制能用到的所有字符 0-15 for(int i=0;i<hex.length();i++){ String s = hex.substring(i, i+1); if
  • @Bean //解决了二进制序列化问题,Utils里使用的是RedisTemplate public RedisTemplate, Object> redisTemplate(@Qualifier("connectionFactory") RedisConnectionFactory factory) { RedisTemplate, Object> ...
  • java二进制文件读写

    热门讨论 2009-02-27 17:47:15
    Java 二进制文件读写的demo,可以提供给需要的朋友使用
  • 当文件下载不是直接打开,而是用接口请求,后端返回的是文件流时,我们就要封装一个方法处理文件流,并下载出来。ps:我用的ui是iview。 //一般文件下载会有多个地方用到,所以vue项目一般都是放在utils工具文件夹里...
  • 在公司做项目的时候发现用Netty进行TCP/IP通信的Netty客户端接收到的数据进制乱码,经过摸索,终于成功解决了这个鸡肋的问题
  • 前言:本文主要介绍java基础类型的二进制转换和二进制的基本概念。二进制:1,二进制是以0和1为码,逢2进1,比如3=11=1*2+1。2,在计算机当中其它进制的算法基本基于2进制,因为计算机只认识0和1,比如16进制数则...
  • JAVA二进制字节数组字符十六进制BCD编码转换
  • 当前位置:我的异常网» Java Web开发»将二进制流还原图片时得到的是乱码,该怎么解决将二进制流还原图片时得到的是乱码,该怎么解决www.myexceptions.net网友分享于:2013-09-12浏览:123次将二进制流还原图片时得到...
  • 将数据库存放的二进制乱码通过base64转成图片 定义函数 /** * @param blob 二进制对象 * 二进制转成Base64 */ public String blobToBase64(Blob blob) { String result = ""; if (null != blob) { tr...
  • java中编码的转换。常见的编码也就ISO8859-1,GBK,GB2312,UTF-8java里有String这个类存储并处理字符串,同样String里有个方法叫getBytes(),这个方法起着编码转换的作用。API里这样解释这个方法:Encodes this String...
  • * 16进制直接转换成为字符串(无需Unicode解码) * @param hexStr Byte字符串(Byte之间无分隔符 * @author xxs * @return 对应的字符串 */ public static String hexStr2Str(String hexStr) { String str = ...
  • java二进制文件,不能直接编辑,该怎么操作?关注:138答案:3mip版解决时间 2021-01-14 21:48提问者醒不来的梦2021-01-14 07:45我现在想做写一个文件,使用二进制来写,写好的文件只能通过我的程序来读,不能使用...
  • 第一步,在 axios 请求中加入参数,表示接收的数据为二进制文件流 responseType: 'blob' 第二步,在拿到数据流之后,把流转为指定文件格式并创建a标签,模拟点击下载,实现文件下载功能 let blob = res.data let reader =...
  • Java八种基本数据类型占用内存空间大小和默认值二、二进制1. 二进制是什么2. 字节是什么3. 计算机中存储二进制的形式3.1 原码、反码、补码是什么3.2 计算机当中存储二进制是存储的哪个码?三、计算机只认识二进制,...
  • 最近接收第三方发送的UDP数据包,通过wirshark抓包后使用其原始数据(16进制),在自己写的UDPclient/server测试成功,在生产环境中,出现了接收数据乱码的问题。 基于Spring Boot2.1.5.RELEASE,jdk 1.8开发 相关...
  • 工作的时候遇到了处理二进制流数据的问题,我是用Map<String,Object>进行接收, 获取value值后,转成CLOB类型的。通过getSubString方法,读取它的所有数据,这样就直接转换成了String类型的数据。 下面还尝试...
  •  utf-8:对应二进制编码格式头为-17 -69 -65 十进制为:EF BB BF  unicode:对应二进制编码格式头为-1 -2 十进制为:FF FE  gbk格式没有自己编码头,所以无法比较.且gbk2312与gbk是包含关系  Unicode ...
  • 读取二进制文件的中文乱码问题

    万次阅读 2015-11-08 16:47:58
    逐步debug,发现并非在网络传输过程中出现乱码问题(若是,可通过对request、response设置编码,setCharacterEncoding("utf-8")解决),而是在读取二进制文件时,未指定编码的原因。 项目中使用了DataInputStream的...
  • ueditor修改版,上传图片直接保存到想要的位置,不再是项目中,添加图文内容直接转为二进制存储数据库方法,直接在页面显示,不需要任何处理。
  • 字符串转为16进制后再转回来,英文正常,中文出现乱码笔者前几日在开服过程中需要将字符串转化成为16进制的字符串,在网上找到了一些方法尝试之后,均发现存在一个问题-->字符串转为16进制后再转回来,英文正常,中文...

空空如也

空空如也

1 2 3 4 5 ... 20
收藏数 31,013
精华内容 12,405
关键字:

java 二进制乱码

java 订阅