curl_file_create函数读取windows本地中文文件名失败

本文探讨了在Windows环境下使用curl_file_create函数处理中文文件名时遇到的编码问题。由于默认编码为GBK,直接使用UTF-8编码的文件名会导致读取失败。文章提供了通过iconv函数将文件名从UTF-8转换为GBK的解决方案,确保文件名正确传输。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

curl_file_create函数在使用的时候,windows默认编码是gbk,所以读取windows系统上中文文件会失败,转换文件名的编码格式再读取,第三个参数传原文件名,不然接收者接收到的gbk 编码的文件名,就会显示乱码

$filename = iconv('utf-8', 'gbk', '藏宝图.jpg'); 

$cfile = curl_file_create($filename, '', '藏宝图.jpg');

 

#!/bin/bash # 定义变量 GITEE_OWNER="your_owner_name" # 替换为你的 Gitee 用户名或组织名 GITEE_REPO="your_repo_name" # 替换为你的 Gitee 仓库名 GITEE_TOKEN="your_personal_access_token" # 替换为你的 Gitee 个人访问令牌 TAG_NAME="2.0" # 发行版标签名 FILE_PATH="path/to/your/file" # 替换为要上传的文件路径 FILE_NAME=$(basename "$FILE_PATH") # 文件名 # 检查文件是否存在 if [[ ! -f "$FILE_PATH" ]]; then echo "错误:文件 '$FILE_PATH' 不存在!" exit 1 fi # 获取发行版 ID echo "正在获取发行版 ID..." RELEASE_ID=$(curl -s -H "Authorization: token $GITEE_TOKEN" \ "https://gitee.com/api/v5/repos/$GITEE_OWNER/$GITEE_REPO/releases/tags/$TAG_NAME" | jq -r '.id') if [[ -z "$RELEASE_ID" || "$RELEASE_ID" == "null" ]]; then echo "错误:未找到标签 '$TAG_NAME' 对应的发行版,请先在 Gitee 创建该标签。" exit 1 fi echo "发行版 ID: $RELEASE_ID" # 上传文件到发行版 echo "正在上传文件 '$FILE_NAME' 到发行版 '$TAG_NAME'..." UPLOAD_RESPONSE=$(curl -s -X POST \ -H "Authorization: token $GITEE_TOKEN" \ -H "Content-Type: application/octet-stream" \ --data-binary @"$FILE_PATH" \ "https://gitee.com/api/v5/repos/$GITEE_OWNER/$GITEE_REPO/releases/$RELEASE_ID/assets?name=$FILE_NAME") # 检查上传结果 if [[ $(echo "$UPLOAD_RESPONSE" | jq -r '.message') == "success" ]]; then echo "文件 '$FILE_NAME' 上传成功!" else echo "文件上传失败!响应:$UPLOAD_RESPONSE" exit 1 fi把这个完善一下
最新发布
04-02
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值