You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

Git推送至远程仓库时SQL文件中ñ等特殊字符变为�如何解决

问题背景

将本地分支改动推送到Git远程分支时,SQL文件中的ñ等特殊字符被自动替换为�,本地与远程的显示效果如下:

  • 本地显示:本地显示效果图
  • 远程显示:远程显示效果图
问题原因

该类乱码本质是UTF-8解码失败的占位符,核心诱因有三类:

  • 文件编码不匹配:本地SQL文件使用非UTF-8编码(如Latin1、GBK等)存储,ñ这类特殊字符的字节序列不符合UTF-8编码规则,Git默认按UTF-8处理文本文件时转码失败,就会将无法识别的字节替换为�。
  • Git编码配置错误:本地Git未正确设置编码相关参数,提交、推送过程中强制对文件内容转码,导致特殊字符字节被损坏。
  • 编辑器保存逻辑异常:本地编辑器默认使用非UTF-8编码保存文件,写入时特殊字符的字节就已经存在隐性问题,推送至远程后问题暴露。
修复方案

临时修复(针对当前已损坏的文件)

  • 保留本地未损坏的原始文件,用编辑器打开后强制以*UTF-8(无BOM)*格式重新保存,再重新提交推送即可。
  • 若本地原始文件已丢失,可使用iconv工具尝试转码修复,参考命令:
    iconv -f ISO-8859-1 -t UTF-8 损坏的目标文件.sql > 修复后文件.sql
    
    需根据原文件实际编码替换命令中的ISO-8859-1参数。

永久修复(避免后续再出现同类问题)

  • 统一团队编码规范:所有SQL、配置类文本文件统一要求使用UTF-8(无BOM)格式存储,从根源避免编码差异。
  • 配置全局Git编码参数,执行以下命令生效:
    git config --global core.quotepath false
    git config --global i18n.commitencoding utf-8
    git config --global i18n.logoutputencoding utf-8
    
  • 将本地常用编辑器的默认保存编码设置为UTF-8,避免保存文件时自动转码为其他格式。

内容的提问来源于stack exchange,提问作者JamesBowery

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.10.02 04:06:03