我谈论的应用程序是 Worms Armageddon (WA)。我在 wine 下运行它。
考虑以下序列:
- 将 Ubuntu GUI 语言切换为俄语(并重新启动会话)
- 将 Ubuntu 键盘布局切换为俄语
- 在 Wine 下运行 WA
- 在 WA 聊天中输入一些西里尔字母
-- 当我这样做时,编码没有问题。但如果我将 Ubuntu GUI 语言切换回英语(并重新启动会话),那么在聊天中输入西里尔字符时(使用俄语键盘布局),聊天中显示的是问号(????、? ?????!..)而不是西里尔字符。
我猜这与 Windows 代码页有某种关系。在俄语中,默认代码页是 cp1251,而在英语中可能是其他欧洲代码页。
所以我的问题是:如何在不将 GUI 语言切换为俄语的情况下在 WA 聊天中输入和阅读西里尔字母?
PS 初始桌面图标是:
[Desktop Entry]
Name=Worms Armageddon
Exec=env WINEPREFIX="/home/uname/.wine" wine C:\\\\windows\\\\command\\\\start.exe /Unix /home/uname/.wine/dosdevices/c:/users/Public/Desktop/Worms\\ Armageddon.lnk
Type=Application
StartupNotify=true
Path=/home/uname/.wine/dosdevices/c:/GOG Games/Worms Armageddon/
Icon=4948_goggame-1462173886.0
StartupWMClass=wa.exe
并且Worms Armageddon.lnk
是指向
C:\GOG Games\Worms Armageddon\WA.exe
答案1
首先,命令行:
LANG=ru_RU.UTF-8 WINEPREFIX="/home/uname/.wine" wine /home/uname/.wine/drive_c/GOG\ Games/Worms\ Armageddon/WA.exe
在命令行开头设置的环境变量仅影响该命令行。您可以使用在单独的行中设置它,export LANG=...
但这会影响导出后该 shell 中的所有命令。
第二,.desktop 快捷方式:
[Desktop Entry]
Name=Worms Armageddon
Exec=env LANG=ru_RU.UTF-8 env WINEPREFIX="/home/uname/.wine" wine C:\\\\windows\\\\command\\\\start.exe /Unix /home/uname/.wine/dosdevices/c:/users/Public/Desktop/Worms\\ Armageddon.lnk
Type=Application
StartupNotify=true
Path=/home/uname/.wine/dosdevices/c:/GOG Games/Worms Armageddon/
Icon=4948_goggame-1462173886.0
StartupWMClass=wa.exe
将 worms.desktop 文件放在上面,~/.local/share/applications/
注意,你使用了默认的 wine 前缀,不需要在命令行中指定它
也许你想在脚本中使用它,它是这样的:
#!/bin/bash
export LANG=ru_RU.UTF-8
export WINEPREFIX="/home/uname/.wine"
wine /home/uname/.wine/drive_c/GOG\ Games/Worms\ Armageddon/WA.exe
导出变量仅在该脚本内部有效