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 socket 乱码怎么办

本教程操作环境:linux5.9.8系统、Dell G3电脑。

linux socket 乱码怎么办?

linux,windows,socket乱码问题

问题描述:

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库

二,函数运用

1.头文件

#include 

2.函数

(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);

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

3.例子: 用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 = %dn" , pOut, iRet);     free (pOut);     pOut = NULL;     return  0;}

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

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

相关推荐:《Linux视频教程》

以上就是linux socket 乱码怎么办的详细内容,更多请关注创想鸟其它相关文章!

版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。
如发现本站有涉嫌抄袭侵权/违法违规的内容, 请发送邮件至 chuangxiangniao@163.com 举报,一经查实,本站将立刻删除。
发布者:程序猿,转转请注明出处:https://www.chuangxiangniao.com/p/132990.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2025年11月29日 03:09:49
下一篇 2025年11月29日 03:53:32

相关推荐

  • 数字货币发展历史汇总

    数字货币起源于2008年金融危机期间中本聪发布的比特币白皮书,其核心是基于区块链技术的去中心化电子现金系统。1. 比特币的诞生标志着数字货币时代的开启,具备去中心化、匿名性、稀缺性、可编程性和不可篡改五大特性。2. 区块链作为底层技术,通过分布式账本、密码学哈希、共识机制、不可篡改性和智能合约,保障…

    2025年12月8日
    000
  • 什么是链上交互 新用户应该如何开始体验

    链上交互是用户与区块链网络进行直接互动的行为,包括授权、质押、交易、铸造nft等操作。本文将带你了解什么是链上交互,以及新用户如何安全、顺利地开始体验这一过程。 在进行链上交互前,建议选择支持链上操作的主流平台。比如,币安提供便捷的链上交易和一键质押工具,适合新手体验去中心化功能。 火币HTX也支持…

    2025年12月8日
    000
  • 深度剖析加密货币的技术底层架构

    加密货币的技术底层架构基于区块链,其核心特性为去中心化、安全性和不可篡改性。1. 区块链由“区块”和“链”构成,通过分布式账本、哈希函数、时间戳和默克尔树确保数据透明与安全;2. 共识机制如PoW、PoS和DPoS保障网络的数据一致性和安全性,其中PoW通过挖k竞争记账权;3. 加密学利用公钥加密、…

    2025年12月8日
    000
  • oe交易所app官网注册链接 oe交易平台官网APP安装注册详细教程

    oe交易所APP是一款提供多样化数字资产交易与管理服务的平台,适合希望进行专业化数字货币投资的用户。本文将为您提供oe交易所APP的官方下载链接,您只需点击本文提供的下载入口,即可轻松完成下载安装。本教程将为您详细介绍从下载到注册的完整流程,帮助您顺利开启交易之旅。 下载安装步骤 1、点击本文提供的…

    2025年12月8日 好文分享
    000
  • 数字货币投资指南:新手如何入门加密货币市场

    新手进入加密货币市场需先掌握基础概念、做好投资准备、选择可靠交易平台、学会交易操作并重视资产安全。1. 加密货币是基于密码学和区块链技术的去中心化数字资产,如比特币(BTC)和以太坊(ETH),其交易记录在不可篡改的分布式账本上。2. 投资前需完成五项准备:学习不同币种的技术与应用、评估自身风险承受…

    2025年12月8日
    000
  • 数字货币在跨境支付中的应用与挑战

    数字货币在跨境支付中的应用通过降低交易成本、提高速度和实现全天候交易展现出显著优势,主要模式包括1.直接点对点交易、2.通过交易所兑换、3.基于稳定币的支付、4.跨境汇款平台整合数字货币;其优势体现在1.降低交易成本、2.提高交易速度、3.实现全天候交易、4.增强透明度和安全性、5.消除中介壁垒;但…

    2025年12月8日 好文分享
    000
  • 如何用Web3赚钱?5种低门槛玩法,适合学生和上班族

    web3的浪潮不仅仅是技术圈的狂欢,它也为普通人打开了全新的收入可能性。告别那些“高深莫测”的印象吧!即便你是时间有限的学生或上班族,也能利用零碎时间,以较低的门槛参与其中。下面为你介绍五种简单易行的web3赚钱玩法。 2025年主流的交易所: 欧易okx:  币安binance:  火币htx: …

    2025年12月8日
    000
  • 区块链是什么?比特币、以太坊底层技术,5分钟通俗解读

    区块链是人人可参与、共同记账、公开透明且无法篡改的超级大账本;比特币是基于区块链的数字货币应用,以太坊则是在区块链上支持智能合约和去中心化应用的升级版平台。 想象一下,村里有个公共大账本,村民们每一次交易(比如张三卖给李四一只羊),都由村里的大喇叭广播给所有人。大家听到后,都在自己家的小账本上记下这…

    2025年12月8日
    000
  • 数字货币发展脉络梳理:起源、现状与未来

    数字货币起源于2008年中本聪发布的比特币白皮书,其核心技术区块链实现了去中心化和不可篡改的交易记录;当前数字货币生态包含公链与DApp、稳定币、DeFi、NFT和元宇宙项目,但面临波动性大、监管不确定和技术门槛高等挑战;主流交易平台有1. Binance(币安),以交易量大、币种丰富、产品多样、生…

    2025年12月8日 好文分享
    000
  • 稳定币官网地址入口 稳定币官网链接

    稳定币作为数字货币市场的重要组成部分,为用户提供了价值稳定的加密资产。为了确保资产安全,访问和使用稳定币的官方网站至关重要。以下整理了部分主流稳定币的官方网站入口地址,请务必通过官方渠道进行访问。 2025年稳定币主流的交易所: 欧易okx:  币安binance:  火币htx:  主流稳定币官网…

    2025年12月8日
    000
  • Web3板块有哪些币 Web3板块龙头币种盘点

    Web3板块的核心币种包括:1. 底层公链与基础设施中的以太坊(ETH)、波卡(DOT)、Solana(SOL);2. 去中心化存储中的Filecoin(FIL)、Arweave(AR)。 Web3被视为互联网的下一代形态,其核心理念是去中心化、用户自主权和基于区块链的价值网络。在这个生态系统中,涌…

    2025年12月8日
    000
  • 如何通过Web3游戏代币赚取被动收入?8月最佳策略

    在2025年8月通过Web3游戏代币赚取被动收入的最佳策略包括:1. 参与已上线主网、APY合理(15%-50%)项目的代币质押以获得稳定收益;2. 优先选择与稳定币配对的流动性池提供流动性,降低无常损失风险并赚取交易手续费。 在Web3游戏的世界里,赚取收入的方式早已超越了简单的“边玩边赚”(Pl…

    2025年12月8日
    000
  • Web3板块有哪些币_Web3板块龙头币种盘点

    Web3板块的核心币种包括:1. 底层公链与基础设施中的以太坊(ETH)、波卡(DOT)、Solana(SOL);2. 去中心化存储中的Filecoin(FIL)、Arweave(AR)。 Web3被视为互联网的下一代形态,其核心理念是去中心化、用户自主权和基于区块链的价值网络。在这个生态系统中,涌…

    2025年12月8日
    000
  • 大白话讲什么是web3 人人都能看懂的web3

    Web3的核心是让用户真正拥有自己的数据和资产,1. Web1只能读,信息单向传播;2. Web2可以读和写,但平台控制一切;3. Web3通过区块链技术实现去中心化,使用户能读、能写、更能拥有,数据由个人掌控,资产安全不可篡改,隐私更强,交易去中介化,应用无法被单方面关闭,最终将互联网的权力归还用…

    2025年12月8日
    000
  • 2025年Web3趋势预测:哪些赛道值得提前布局?新手必看

    2025年Web3将迈向大规模落地,新手应重点关注四大核心赛道并遵循四步安全布局策略。 随着区块链技术的不断成熟和应用场景的持续拓展,Web3正在从概念炒作阶段迈向大规模应用的落地期。2025年,我们将见证更多创新与融合,对于希望进入这个领域的新手来说,提前了解并布局关键赛道至关重要。以下是对202…

    2025年12月8日
    000
  • Codatta(XNY币)是什么?XNY代币经济学、价格预测介绍

    Codatta 是什么?解决 AI 时代的核心痛点 Codatta 定位于 AGI(通用人工智能)的可扩展数据通道,利用区块链技术打造去中心化数据协议。它连接数据提供者与 AI 开发者,将原始信息转化为可验证、可资产化的数据资源,直面传统中心化数据市场的四大难题: 数据溯源困难:无法确认来源与真实性…

    2025年12月8日
    100
  • 以太坊交易员预计ETH价格将在本周期达到1.6万美元

    目录 要点摘要:以太坊技术面暗示ETH价格或将冲击五位数现货以太坊ETF持续18日资金净流入 ‍以太坊正构筑一个上升三角形突破结构,潜在价格目标指向约16,700美元。 要点摘要: 尽管以太坊在4,000美元区域遭遇阻力,但强劲的技术信号与不断上升的机构兴趣可能推动ETH进入新一轮价格发现阶段。上升…

    2025年12月8日 好文分享
    000
  • 什么是OLAXBT(AIO币)?值得投资吗?OLAXBT项目概述,代币经济,前景分析

    目录 OLAXBT项目定位OLAXBT核心技术OlaXBT最新动态AIO代币经济代币分配解锁时间表代币效用OLAXBT生态进展OLAXBT风险管理与应对措施OLAXBT未来规划常见问题总结 olaxbt(aio)是一款将 ai 驱动的量化策略与去中心化交易协议结合的 web3 平台,旨在通过预制与自…

    2025年12月8日 好文分享
    000
  • 以太坊(ETH)衍生品缺乏动力,引发对冲击4000美元反弹的质疑

    目录 要点摘要:ETH交易者情绪低迷,因以太坊TVL下滑 ‍尽管etf资金持续流入,但由于竞争加剧与链上活动乏力,eth市场参与者仍保持谨慎。 要点摘要: 尽管ETH价格反弹且ETF资金流入强劲,衍生品数据表明交易者情绪仍偏保守。以太坊面临来自Solana和BNB Chain的竞争压力,同时自身网络…

    2025年12月8日 好文分享
    000
  • Layer2 混战再起:Linea 代币上线,是机会还是鸡肋?

    备受关注的以太坊二层网络Linea终于正式推出其原生代币。 根据项目团队发布的最新公告,我整理出一些对普通用户尤为重要的信息点: – 代币总供应量约为720亿枚– 其中9%将通过空投形式发放给早期用户…… 目前,LINEA代币在系统中尚未赋予具体用途,既不作为交易手续费支付(…

    2025年12月8日
    000

发表回复

登录后才能评论
关注微信