Я использую проект сборки vs2022 на C++
Я использую printf и пишу китайскую строку.
Я обнаружил, что все китайские иероглифы — это тарабарщина. Вот так:


мой сценарий сборки
name: C++ Build with Dependencies
#on: [push]
on:
workflow_dispatch:
permissions:
contents: write
jobs:
build:
strategy:
matrix:
configuration: [Release]
platform: [x86]
runs-on: windows-latest
steps:
- name: Checkout main repository code
uses: actions/checkout@v4
- name: Setup Console Code Page to GBK
run: chcp 936
shell: pwsh
- name: Checkout dependency repository (xengine)
uses: actions/checkout@v3
with:
repository: libxengine/xengine
path: xengine
- name: Set up Dependency Environment Variables
run: |
echo "XENGINE_INCLUDE=${{ github.workspace }}/xengine" | Out-File -FilePath $env:GITHUB_ENV -Append
echo "XENGINE_LIB32=${{ github.workspace }}/xengine/XEngine_Windows/x86" | Out-File -FilePath $env:GITHUB_ENV -Append
echo "XENGINE_LIB64=${{ github.workspace }}/xengine/XEngine_Windows/x64" | Out-File -FilePath $env:GITHUB_ENV -Append
shell: pwsh
- name: Setup MSBuild
uses: microsoft/[email protected]
#编译
- name: Build Solution
run: msbuild XEngine_Source/XEngine_StorageApp.sln /p:Configuration=${{ matrix.configuration }} /p:Platform=${{ matrix.platform }}
- name: Copy Build binaries for x86
run: |
mkdir -p "x86/XEngine_StorageApp"
cp -r ./XEngine_Release/* x86/XEngine_StorageApp/
cp -r ./XEngine_Source/Release/*.dll x86/XEngine_StorageApp/
cp -r ./XEngine_Source/Release/*.exe x86/XEngine_StorageApp/
cp -r ./XEngine_Source/VSCopy_x86.bat x86/XEngine_StorageApp/
cd x86/XEngine_StorageApp && ./VSCopy_x86.bat
cd ..
cd ..
7z a XEngine_StorageApp-x86-Windows.zip ./x86/XEngine_StorageApp
shell: pwsh
- name: Calculate new tag
id: newtag
shell: bash
run: |
git fetch --tags
TAG=$(git tag --sort=-v:refname | head -n 1)
MAJOR=$(echo $TAG | cut -d '.' -f 1)
MINOR=$(echo $TAG | cut -d '.' -f 2)
PATCH=$(echo $TAG | cut -d '.' -f 3)
BUILD=$(echo $TAG | cut -d '.' -f 4)
MINOR_BUMP=$((MINOR + 1))
NEW_TAG = "${MAJOR}.${MINOR_BUMP}.0.${BUILD}"
echo "NEW_TAG=$NEW_TAG" >> $GITHUB_ENV
git config --local user.email "[email protected]"
git config --local user.name "GitHub Action"
git tag $NEW_TAG
git push origin $NEW_TAG
- name: Create Release
id: create_release
uses: softprops/action-gh-release@v1
with:
tag_name: ${{ env.NEW_TAG }}
name: Release ${{ env.NEW_TAG }}
body: |
[${{ github.sha }}](https://github.com/xengine-qyt/XEngine_Storage/commit/${{ github.sha }})
${{ github.event.head_commit.message }}
draft: false
prerelease: false
env:
GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }}
- name: Upload x86 Release Asset
uses: actions/upload-release-asset@v1
env:
GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }}
with:
upload_url: ${{ steps.create_release.outputs.upload_url }}
asset_path: ./XEngine_StorageApp-x86-Windows.zip
asset_name: XEngine_StorageApp-x86-Windows.zip
asset_content_type: application/zip
В моей китайской системной среде результат нормальный. Когда я пытаюсь написать код для вывода строки UNICODE, это не работает. Что мне делать, чтобы вывести китайский язык?
Переключите все на UTF-8.
@AndréLehto, хотя я в целом согласен с тем, что изображения текста — это плохо, я бы посчитал это исключением из правил.
Я не использовал для этого ничего, кроме ASCII, поэтому не могу дать вам решение, я бы рассмотрел только несколько вещей. Для начала проверьте, поддерживает ли GitHub эти китайские символы вообще, заменив name: в этом файле на какой-нибудь китайский текст. Если это отображается неправильно в графическом интерфейсе, боюсь, вам не повезло. Затем выясните, работает ли вывод из Powershell. Я думаю, что chcp 936 может работать неправильно. Во-первых, он выполняется в одной оболочке, а вывод происходит в другой оболочке. Другое дело, что для UTF-8 вам нужна другая кодовая страница.
весь мой код - utf8-bom....





Шаги будут выполняться в независимой среде оболочки. chcp 936 не повлияет на последующие шаги. Вам нужно добавить его к конкретному шагу, который использует символы GBK.
как настроить.тест не работает. - имя: Запуск решения сборки: | chcp 936 msbuild .... оболочка: pwsh
Не размещайте изображения в своих вопросах. Посмотрите как спросить.