广告
返回顶部
首页 > 资讯 > 操作系统 >linux socket乱码如何解决
  • 935
分享到

linux socket乱码如何解决

2023-07-05 12:07:22 935人浏览 八月长安
摘要

这篇文章主要讲解了“linux Socket乱码如何解决”,文中的讲解内容简单清晰,易于学习与理解,下面请大家跟着小编的思路慢慢深入,一起来研究和学习“linux socket乱码如何解决”吧!linux socket乱码的解决办法:1、打

这篇文章主要讲解了“linux Socket乱码如何解决”,文中的讲解内容简单清晰,易于学习与理解,下面请大家跟着小编的思路慢慢深入,一起来研究和学习“linux socket乱码如何解决”吧!

linux socket乱码的解决办法:1、打开终端命令窗口;2、利用iconv命令实现linux文件字符集转换,转换命令如“iconv -f utf-8 -t gb2312 /server_test/reports/software_.txt > /server_test/reports/software_asserts.txt”。

问题描述:

linux中有一个自己写的ftp 客户端,windows上有一个用windows自带软件搭的ftp服务端,当我通过程序在服务端上创建含有中文的目录或者含有中文的文件名时,中文名乱码

问题分析:

这毫无疑问是由于编码问题导致的,那么如何确认应该是哪种编码呢?百度之后发现,ubuntu下默认采用utf-8,而windows默认采用gbk,所以保证含有中文路径的内容发出来的时候 转成gbk就可以了

解决方案:

utf8和gbk互转:

linux文件字符集转换(utf8-gb2312)

一,命令行

在LINUX上进行编码转换时,可以利用iconv命令实现,这是针对文件的,即将指定文件从一种编码转换为另一种编码。

iconv命令用法如下:

iconv [选项...] [文件...]

  • 输入/输出格式规范:

  -f, --from-code=名称 原始文本编码  -t, --to-code=名称 输出编码

  • 列举所有已知的字符集  -l, --list

  • 输出控制:

  -c   从输出中忽略无效的字符  -o, --output=FILE   输出文件  -s, --silent   关闭警告  --verbose   打印进度信息

例子:

iconv -f utf-8 -t gb2312 /server_test/reports/software_.txt > /server_test/reports/software_asserts.txt

下面需求库文件请在嵌入式板子上面下载libiconv库

二,函数运用

头文件

#include <iconv.h>

函数

(1) iconv_t iconv_open(const char *tocode, const char *fromcode);

此函数说明将要进行哪两种编码的转换,tocode是目标编码,fromcode是原编码,该函数返回一个转换句柄,供以下两个函数使用。

(2) size_t iconv(iconv_t cd,char **inbuf,size_t *inbytesleft,char **outbuf,size_t *outbytesleft);

此函数从inbuf中读取字符,转换后输出到outbuf中,inbytesleft用以记录还未转换的字符数,outbytesleft用以记录输出缓冲的剩余空间。

(3) int iconv_close(iconv_t cd);

此函数用于关闭转换句柄,释放资源。

例子: 用C语言实现的转换示例程序

#include "stdio.h"#include "string.h"#include "iconv.h"#include "stdlib.h" static  int  charset_convert( const  char  *from_charset,  const  char  *to_charset,                            char  *in_buf,  size_t  in_left,  char  *out_buf,  size_t  out_left){     iconv_t icd = (iconv_t)-1;     size_t  sRet = -1;     char  *pIn = in_buf;     char  *pOut = out_buf;     size_t  outLen = out_left;      if  (NULL == from_charset || NULL == to_charset || NULL == in_buf || 0 >= in_left || NULL == out_buf || 0 >= out_left)     {         return  -1;     }      icd = iconv_open(to_charset, from_charset);     if  ((iconv_t)-1 == icd)     {         return  -1;     }      sRet = iconv(icd, &pIn, &in_left, &pOut, &out_left);     if  (( size_t )-1 == sRet)     {         iconv_close(icd);         return  -1;     }      out_buf[outLen - out_left] = 0;     iconv_close(icd);     return  ( int )(outLen - out_left);} static  int  charset_convert_UTF8_TO_GB2312( char  *in_buf,  size_t  in_left,  char  *out_buf,  size_t  out_left){     return  charset_convert( "UTF-8" ,  "GB2312" , in_buf, in_left, out_buf, out_left);} static  int  charset_convert_GB2312_TO_UTF8( char  *in_buf,  size_t  in_left,  char  *out_buf,  size_t  out_left){     return  charset_convert( "GB2312-8" ,  "UTF-8" , in_buf, in_left, out_buf, out_left);} int  main(){     char  *pIn =  "hello 中国人" ;     char  *pOut = NULL;     size_t  outLen = 0;     size_t  inLen = 0;     int  iRet = -1;      inLen =  strlen (pIn);     outLen = inLen * 3;     pOut = ( char  *) malloc ( sizeof ( char ) * outLen);     if  (NULL == pOut)     {         return  -1;     }     memset (pOut, 0,  sizeof ( char ) * outLen);      iRet = charset_convert_UTF8_TO_GB2312(pIn, ( size_t )inLen, pOut, ( size_t )inLen);     if  (-1 == iRet)     {         return  -1;     }      printf ( "out = %s;\touLen = %d\n" , pOut, iRet);     free (pOut);     pOut = NULL;     return  0;}

这个实现可以跨平台,个人觉得比较好~

ps:之前做的ftp client是在windows上的,由于甲方说要移植过去,就换到了windows上,然后就出现了上面的问题,虽然对项目中出现的中文比较方案,但好歹是积累了解决问题的经验(不用中文,用拼音都行啊)

感谢各位的阅读,以上就是“linux socket乱码如何解决”的内容了,经过本文的学习后,相信大家对linux socket乱码如何解决这一问题有了更深刻的体会,具体使用情况还需要大家实践验证。这里是编程网,小编将为大家推送更多相关知识点的文章,欢迎关注!

--结束END--

本文标题: linux socket乱码如何解决

本文链接: https://www.lsjlt.com/news/351779.html(转载时请注明来源链接)

有问题或投稿请发送至: 邮箱/279061341@qq.com    QQ/279061341

本篇文章演示代码以及资料文档资料下载

下载Word文档到电脑,方便收藏和打印~

下载Word文档
猜你喜欢
  • linux socket乱码如何解决
    这篇文章主要讲解了“linux socket乱码如何解决”,文中的讲解内容简单清晰,易于学习与理解,下面请大家跟着小编的思路慢慢深入,一起来研究和学习“linux socket乱码如何解决”吧!linux socket乱码的解决办法:1、打...
    99+
    2023-07-05
  • linux ls命令乱码如何解决
    如果在Linux中使用ls命令时出现乱码,可能是因为终端字符集与文件编码不匹配导致的。以下是几种可能的解决方法:1. 修改终端字符集...
    99+
    2023-08-29
    linux
  • linux vim中文乱码如何解决
    这篇文章主要介绍“linux vim中文乱码如何解决”的相关知识,小编通过实际案例向大家展示操作过程,操作方法简单快捷,实用性强,希望这篇“linux vim中文乱码如何解决”文章能帮助大家解决问题。 ...
    99+
    2023-03-15
    linux vim
  • linux tty中文乱码如何解决
    这篇文章主要讲解了“linux tty中文乱码如何解决”,文中的讲解内容简单清晰,易于学习与理解,下面请大家跟着小编的思路慢慢深入,一起来研究和学习“linux tty中文乱码如何解决”吧!linux tty中文乱码的解决办法:1、通过“s...
    99+
    2023-07-05
  • 如何解决linux ssh乱码问题
    这篇文章主要讲解了“如何解决linux ssh乱码问题”,文中的讲解内容简单清晰,易于学习与理解,下面请大家跟着小编的思路慢慢深入,一起来研究和学习“如何解决linux ssh乱码问题”吧!解决linux ssh 乱码的解决办法:1、修改l...
    99+
    2023-06-21
  • 如何解决Kali Linux 2020.1乱码问题
    今天就跟大家聊聊有关如何解决Kali Linux 2020.1乱码问题,可能很多人都不太了解,为了让大家更加了解,小编给大家总结了以下内容,希望大家根据这篇文章可以有所收获。Kali Linux 2020.1乱码问题Kali Linux 2...
    99+
    2023-06-05
  • Suse Linux如何解决AWT界面乱码
    这期内容当中小编将会给大家带来有关Suse Linux如何解决AWT界面乱码,文章内容丰富且以专业的角度为大家分析和叙述,阅读完这篇文章希望大家可以有所收获。我们在安装Suse Linux时,会遇到这样那样的问题,比如说Suse Linux...
    99+
    2023-06-17
  • MFC Java 使用socket 中文乱码解决方法
    在 MFC 中使用 Java 的 Socket 进行通信时,中文乱码问题可能出现在两个方面:发送端和接收端。下面给出解决方法:发送端...
    99+
    2023-10-12
    MFC
  • linux中安装mysql 5.5乱码如何解决
    这篇文章给大家介绍linux中安装mysql 5.5乱码如何解决,内容非常详细,感兴趣的小伙伴们可以参考借鉴,希望对大家能有所帮助。Ruby代码  1.打开my.cnf文件,增加如下参数: &nb...
    99+
    2022-10-18
  • 如何解决linux下mysql乱码的问题
    小编给大家分享一下如何解决linux下mysql乱码的问题,相信大部分人都还不怎么了解,因此分享这篇文章给大家参考一下,希望大家阅读完这篇文章后大有收获,下面让我们一起去了解一下吧!项目进行到和服务器交互,...
    99+
    2022-10-18
  • linux命令行显示乱码如何解决
    本篇内容主要讲解“linux命令行显示乱码如何解决”,感兴趣的朋友不妨来看看。本文介绍的方法操作简单快捷,实用性强。下面就让小编来带大家学习“linux命令行显示乱码如何解决”吧! ...
    99+
    2023-03-06
    linux
  • ​java socket通讯中文乱码问题怎么解决
    在Java Socket通讯中,中文乱码问题通常是由于字符编码不一致引起的。可以尝试以下几种解决方案: 统一字符编码:在通讯的两...
    99+
    2023-10-21
    ​java socket
  • 解决Kali Linux 2020.1乱码问题
    解决Kali Linux 2020.1乱码问题Kali Linux 2020.1安装后,默认XFCE桌面字体显示为乱码。这是由于缺少中文字体包,所以需要安装中文字体。在终端执行如下命令:apt-get...
    99+
    2023-06-05
  • Linux下oracle显示乱码解决
    1.登录oracle用户,登录dba,显示乱码???[root@redhat4 ~]# su - oracle[oracle@redhat4 ~]$ sqlplus / as sysdbaSQL*Plus:...
    99+
    2022-10-18
  • Linux怎么解决中文乱码
    这篇“Linux怎么解决中文乱码”文章的知识点大部分人都不太理解,所以小编给大家总结了以下内容,内容详细,步骤清晰,具有一定的借鉴价值,希望大家阅读完这篇文章能有所收获,下面我们一起来看看这篇“Linux怎么解决中文乱码”文章吧。检查系统编...
    99+
    2023-06-28
  • 怎么解决Linux乱码现象
    这篇文章主要为大家展示了“怎么解决Linux乱码现象”,内容简而易懂,条理清晰,希望能够帮助大家解决疑惑,下面让小编带领大家一起研究并学习一下“怎么解决Linux乱码现象”这篇文章吧。具体解决方法是:1,修改远程linux机器的配置vim ...
    99+
    2023-06-16
  • HTML乱码如何解决
    本文小编为大家详细介绍“HTML乱码如何解决”,内容详细,步骤清晰,细节处理妥当,希望这篇“HTML乱码如何解决”文章能帮助大家解决疑惑,下面跟着小编的思路慢慢深入,一起来学习新知识吧。乱码的产生原因是因为编码格式不匹配造成的。不同编码内容...
    99+
    2023-06-27
  • dataoutputstream乱码如何解决
    本文小编为大家详细介绍“dataoutputstream乱码如何解决”,内容详细,步骤清晰,细节处理妥当,希望这篇“dataoutputstream乱码如何解决”文章能帮助大家解决疑惑,下面跟着小编的思路慢慢深入,一起来学习新知识吧。dat...
    99+
    2023-07-04
  • 如何解决Ajaxrequestresponse乱码
    如何解决Ajaxrequestresponse乱码,针对这个问题,这篇文章详细介绍了相对应的分析和解答,希望可以帮助更多想解决这个问题的小伙伴找到更简单易行的方法。奇怪的是今天出现了问题?? 代码如下:Aj...
    99+
    2022-10-19
  • golang乱码如何解决
    Golang 是近年来比较流行的开发语言之一,其语法简单,处理并发能力强,越来越多的公司和开发者选择使用它来进行开发和运维。然而,在使用 Golang 进行开发和处理数据时,也会遇到一些问题,比如出现乱码。本文将介绍 Golang 中可能出...
    99+
    2023-05-14
软考高级职称资格查询
编程网,编程工程师的家园,是目前国内优秀的开源技术社区之一,形成了由开源软件库、代码分享、资讯、协作翻译、讨论区和博客等几大频道内容,为IT开发者提供了一个发现、使用、并交流开源技术的平台。
  • 官方手机版

  • 微信公众号

  • 商务合作