mirror of
https://github.com/go-gitea/gitea.git
synced 2026-07-28 01:33:48 -05:00
Web Upload Treats UTF-16LE XML Files as Binary Despite .gitattributes #14197
Open
opened 2025-11-02 11:06:01 -06:00 by GiteaMirror
·
11 comments
No Branch/Tag Specified
main
release/v1.25
release/v1.24
release/v1.23
release/v1.22
release/v1.21
release/v1.20
release/v1.19
release/v1.18
release/v1.17
release/v1.16
release/v1.15
release/v1.14
release/v1.13
release/v1.12
release/v1.11
release/v1.10
release/v1.9
release/v1.8
v1.25.3
v1.25.2
v1.25.1
v1.25.0
v1.24.7
v1.25.0-rc0
v1.26.0-dev
v1.24.6
v1.24.5
v1.24.4
v1.24.3
v1.24.2
v1.24.1
v1.24.0
v1.23.8
v1.24.0-rc0
v1.25.0-dev
v1.23.7
v1.23.6
v1.23.5
v1.23.4
v1.23.3
v1.23.2
v1.23.1
v1.23.0
v1.23.0-rc0
v1.24.0-dev
v1.22.6
v1.22.5
v1.22.4
v1.22.3
v1.22.2
v1.22.1
v1.22.0
v1.23.0-dev
v1.22.0-rc1
v1.21.11
v1.22.0-rc0
v1.21.10
v1.21.9
v1.21.8
v1.21.7
v1.21.6
v1.21.5
v1.21.4
v1.21.3
v1.21.2
v1.20.6
v1.21.1
v1.21.0
v1.21.0-rc2
v1.21.0-rc1
v1.20.5
v1.22.0-dev
v1.21.0-rc0
v1.20.4
v1.20.3
v1.20.2
v1.20.1
v1.20.0
v1.19.4
v1.21.0-dev
v1.20.0-rc2
v1.20.0-rc1
v1.20.0-rc0
v1.19.3
v1.19.2
v1.19.1
v1.19.0
v1.19.0-rc1
v1.20.0-dev
v1.19.0-rc0
v1.18.5
v1.18.4
v1.18.3
v1.18.2
v1.18.1
v1.18.0
v1.17.4
v1.18.0-rc1
v1.19.0-dev
v1.18.0-rc0
v1.17.3
v1.17.2
v1.17.1
v1.17.0
v1.17.0-rc2
v1.16.9
v1.17.0-rc1
v1.18.0-dev
v1.16.8
v1.16.7
v1.16.6
v1.16.5
v1.16.4
v1.16.3
v1.16.2
v1.16.1
v1.16.0
v1.15.11
v1.17.0-dev
v1.16.0-rc1
v1.15.10
v1.15.9
v1.15.8
v1.15.7
v1.15.6
v1.15.5
v1.15.4
v1.15.3
v1.15.2
v1.15.1
v1.14.7
v1.15.0
v1.15.0-rc3
v1.14.6
v1.15.0-rc2
v1.14.5
v1.16.0-dev
v1.15.0-rc1
v1.14.4
v1.14.3
v1.14.2
v1.14.1
v1.14.0
v1.13.7
v1.14.0-rc2
v1.13.6
v1.13.5
v1.14.0-rc1
v1.15.0-dev
v1.13.4
v1.13.3
v1.13.2
v1.13.1
v1.13.0
v1.12.6
v1.13.0-rc2
v1.14.0-dev
v1.13.0-rc1
v1.12.5
v1.12.4
v1.12.3
v1.12.2
v1.12.1
v1.11.8
v1.12.0
v1.11.7
v1.12.0-rc2
v1.11.6
v1.12.0-rc1
v1.13.0-dev
v1.11.5
v1.11.4
v1.11.3
v1.10.6
v1.12.0-dev
v1.11.2
v1.10.5
v1.11.1
v1.10.4
v1.11.0
v1.11.0-rc2
v1.10.3
v1.11.0-rc1
v1.10.2
v1.10.1
v1.10.0
v1.9.6
v1.9.5
v1.10.0-rc2
v1.11.0-dev
v1.10.0-rc1
v1.9.4
v1.9.3
v1.9.2
v1.9.1
v1.9.0
v1.9.0-rc2
v1.10.0-dev
v1.9.0-rc1
v1.8.3
v1.8.2
v1.8.1
v1.8.0
v1.8.0-rc3
v1.7.6
v1.8.0-rc2
v1.7.5
v1.8.0-rc1
v1.9.0-dev
v1.7.4
v1.7.3
v1.7.2
v1.7.1
v1.7.0
v1.7.0-rc3
v1.6.4
v1.7.0-rc2
v1.6.3
v1.7.0-rc1
v1.7.0-dev
v1.6.2
v1.6.1
v1.6.0
v1.6.0-rc2
v1.5.3
v1.6.0-rc1
v1.6.0-dev
v1.5.2
v1.5.1
v1.5.0
v1.5.0-rc2
v1.5.0-rc1
v1.5.0-dev
v1.4.3
v1.4.2
v1.4.1
v1.4.0
v1.4.0-rc3
v1.4.0-rc2
v1.3.3
v1.4.0-rc1
v1.3.2
v1.3.1
v1.3.0
v1.3.0-rc2
v1.3.0-rc1
v1.2.3
v1.2.2
v1.2.1
v1.2.0
v1.2.0-rc3
v1.2.0-rc2
v1.1.4
v1.2.0-rc1
v1.1.3
v1.1.2
v1.1.1
v1.1.0
v1.0.2
v1.0.1
v1.0.0
v0.9.99
Labels
Clear labels
$20
$250
$50
$500
backport/done
💎 Bounty
docs-update-needed
good first issue
hacktoberfest
issue/bounty
issue/confirmed
issue/critical
issue/duplicate
issue/needs-feedback
issue/not-a-bug
issue/regression
issue/stale
issue/workaround
lgtm/need 2
modifies/api
modifies/translation
outdated/backport/v1.18
outdated/theme/markdown
outdated/theme/timetracker
performance/bigrepo
performance/cpu
performance/memory
performance/speed
pr/breaking
proposal/accepted
proposal/rejected
pr/wip
pull-request
reviewed/wontfix
💰 Rewarded
skip-changelog
status/blocked
topic/accessibility
topic/api
topic/authentication
topic/build
topic/code-linting
topic/commit-signing
topic/content-rendering
topic/deployment
topic/distribution
topic/federation
topic/gitea-actions
topic/issues
topic/lfs
topic/mobile
topic/moderation
topic/packages
topic/pr
topic/projects
topic/repo
topic/repo-migration
topic/security
topic/theme
topic/ui
topic/ui-interaction
topic/ux
topic/webhooks
topic/wiki
type/bug
type/deprecation
type/docs
type/enhancement
type/feature
type/miscellaneous
type/proposal
type/question
type/refactoring
type/summary
type/testing
type/upstream
Mirrored from GitHub Pull Request
No labels
type/bug
Milestone
No items
No Milestone
Projects
Clear projects
No projects
No Assignees
Notifications
Due Date
No due date set.
Dependencies
No dependencies set.
Reference: github-starred/gitea#14197
Reference in New Issue
Block a user
Blocking a user prevents them from interacting with repositories, such as opening or commenting on pull requests or issues. Learn more about blocking a user.
Originally created by @kool2zero on GitHub (Feb 26, 2025).
Description
Description
When uploading a UTF-16 Little Endian (without BOM) XML file to a Gitea repository via the web interface, the file is treated as binary, and textual diffs are not displayed. Committing the same file via the command line (or VS Code, which uses the command line) works correctly, with textual diffs shown as expected. This indicates that the issue is specific to the web upload process.
Issue Replicated in Demo
Steps to Reproduce
Create a new Gitea repository.
Create a
.gitattributesfile in the root of the repository with the following content:Create an XML file (e.g.,
test.xml) encoded in UTF-16 Little Endian without a Byte Order Mark (BOM). You can use a text editor like Notepad++ or VS Code to ensure the correct encoding. A simple example file:Commit and push the
.gitattributesandtest.xmlfiles using the Git command line:Modify the XML file locally. Change the attribute value (e.g., from "value1" to "value2"). Save the file (still as UTF-16LE, no BOM).
Upload via the Web UI:
Add FilethenUpload FileCommit Changesbutton.View the diff: Go to the commit history and view the diff for the uploaded
test.xmlfile.Expected Behavior
The diff should be displayed as a textual diff, showing the change in the attribute value (e.g., "value1" to "value2").
Actual Behavior
The diff is displayed as a binary diff ("Binary files a/test.xml and b/test.xml differ").
Context
@delvh commented on GitHub (Feb 26, 2025):
?
@kool2zero commented on GitHub (Feb 26, 2025):
Check the diff between the two auxiliary branches during a pull request. When the file is pushed via vs code, the diff seems to work. When the file is uploaded via the web interface, it does not. The file is treated as binary...
@wxiaoguang commented on GitHub (Feb 27, 2025):
IIRC the web interface only supports UTF-8
@kool2zero commented on GitHub (Feb 27, 2025):
It seems like the change was made 2 years ago to not assume the encoding, so I thought that it should work if the file is being uploaded as is. I'm assuming the web interface is using the API to upload the file.
#18368 #25828
@lunny commented on GitHub (Feb 27, 2025):
Is that related? He is just uploading the file with no modification in the web interface.
I don't believe they are related. Removing the guessing of encoding is right which is consistent how a file pushed from git client.
@kool2zero commented on GitHub (Feb 27, 2025):
Basically my use case is to add a code review prior to loading the file into the target application. So I would like to have a user go into the web interface, create a branch, upload their change, then initiate a pull request. Using workflows, I would then take the file and load it into the target system. The application expects UTF-16.
I am trying to remove the need for them to use separate git software.
As of right now, my workaround is to have them:
Let me know if this makes sense or you need additional clarification.
@wxiaoguang commented on GitHub (Feb 28, 2025):
Why not related? The web interface only supports UTF-8.
@wxiaoguang commented on GitHub (Feb 28, 2025):
BOM/Encoding problem is the same as EOL problem.
See my proposal:
@lunny commented on GitHub (Feb 28, 2025):
Oh. Yes, it's related. If they use
uploading filefeature, that should not be affected.@kool2zero commented on GitHub (Feb 28, 2025):
Sorry for the confusion, I had used copilot to help make sure I got all of the information I needed as I was trying to figure out where the process was breaking down and I skimmed the part where it said upload via web ui. I am not copying and pasting, I am using the upload file feature.
I have updated the initial problem with the above. I apologize for the confusion, purely my bad.
@kool2zero commented on GitHub (Apr 10, 2025):
Any thoughts?