mirror of
https://github.com/dcs-liberation/dcs_liberation.git
synced 2025-11-10 14:22:26 +00:00
Open all files with utf-8 encoding
- will not be used for binary read/writes (rb,wb)! - prevents a bug where units with special characters in the unit name can not be tracked anymore as there will be a name mismatch due to wrong encoding (cherry-picked from b5b0d82)
This commit is contained in:
parent
2f56bae3e5
commit
40b147148b
@ -10,6 +10,7 @@ Saves from 4.1.1 are compatible with 4.1.2.
|
||||
## Fixes
|
||||
|
||||
* **[UI]** Selling of Units is now visible again in the UI dialog and shows the correct amount of sold units
|
||||
* **[Mission Generation]** Mission results and other files will now be opened with enforced utf-8 encoding to prevent an issue where destroyed ground units were untracked because of special characters in their names.
|
||||
|
||||
# 4.1.1
|
||||
|
||||
|
||||
@ -288,7 +288,7 @@ class AircraftType(UnitType[Type[FlyingType]]):
|
||||
logging.warning(f"No data for {aircraft.id}; it will not be available")
|
||||
return
|
||||
|
||||
with data_path.open() as data_file:
|
||||
with data_path.open(encoding="utf-8") as data_file:
|
||||
data = yaml.safe_load(data_file)
|
||||
|
||||
try:
|
||||
|
||||
@ -67,7 +67,7 @@ class GroundUnitType(UnitType[Type[VehicleType]]):
|
||||
logging.warning(f"No data for {vehicle.id}; it will not be available")
|
||||
return
|
||||
|
||||
with data_path.open() as data_file:
|
||||
with data_path.open(encoding="utf-8") as data_file:
|
||||
data = yaml.safe_load(data_file)
|
||||
|
||||
try:
|
||||
|
||||
@ -389,7 +389,7 @@ class PollDebriefingFileThread(threading.Thread):
|
||||
os.path.isfile("state.json")
|
||||
and os.path.getmtime("state.json") > last_modified
|
||||
):
|
||||
with open("state.json", "r") as json_file:
|
||||
with open("state.json", "r", encoding="utf-8") as json_file:
|
||||
json_data = json.load(json_file)
|
||||
debriefing = Debriefing(json_data, self.game, self.unit_map)
|
||||
self.callback(debriefing)
|
||||
|
||||
@ -63,7 +63,7 @@ class Operation:
|
||||
|
||||
@classmethod
|
||||
def prepare(cls, game: Game) -> None:
|
||||
with open("resources/default_options.lua", "r") as f:
|
||||
with open("resources/default_options.lua", "r", encoding="utf-8") as f:
|
||||
options_dict = loads(f.read())["options"]
|
||||
cls._set_mission(Mission(game.theater.terrain))
|
||||
cls.game = game
|
||||
|
||||
@ -12,7 +12,7 @@ def _build_version_string() -> str:
|
||||
]
|
||||
build_number_path = Path("resources/buildnumber")
|
||||
if build_number_path.exists():
|
||||
with build_number_path.open("r") as build_number_file:
|
||||
with build_number_path.open("r", encoding="utf-8") as build_number_file:
|
||||
components.append(build_number_file.readline())
|
||||
|
||||
if not Path("resources/final").exists():
|
||||
|
||||
@ -68,7 +68,8 @@ def run_ui(game: Optional[Game]) -> None:
|
||||
# init the theme and load the stylesheet based on the theme index
|
||||
liberation_theme.init()
|
||||
with open(
|
||||
"./resources/stylesheets/" + liberation_theme.get_theme_css_file()
|
||||
"./resources/stylesheets/" + liberation_theme.get_theme_css_file(),
|
||||
encoding="utf-8",
|
||||
) as stylesheet:
|
||||
logging.info("Loading stylesheet: %s", liberation_theme.get_theme_css_file())
|
||||
app.setStyleSheet(stylesheet.read())
|
||||
|
||||
@ -228,7 +228,7 @@ class QWaitingForMissionResultWindow(QDialog):
|
||||
)
|
||||
print(file)
|
||||
try:
|
||||
with open(file[0], "r") as json_file:
|
||||
with open(file[0], "r", encoding="utf-8") as json_file:
|
||||
json_data = json.load(json_file)
|
||||
json_data["mission_ended"] = True
|
||||
debriefing = Debriefing(json_data, self.game, self.unit_map)
|
||||
|
||||
@ -42,7 +42,7 @@ class Campaign:
|
||||
|
||||
@classmethod
|
||||
def from_json(cls, path: Path) -> Campaign:
|
||||
with path.open() as campaign_file:
|
||||
with path.open(encoding="utf-8") as campaign_file:
|
||||
data = json.load(campaign_file)
|
||||
|
||||
sanitized_theater = data["theater"].replace(" ", "")
|
||||
|
||||
Loading…
x
Reference in New Issue
Block a user