mirror of
https://github.com/yairm210/Unciv.git
synced 2025-07-08 23:08:35 +07:00
Consistent UTF-8 where possible (#9927)
* Consistent UTF-8 where possible * Remove one import
This commit is contained in:
@ -320,7 +320,7 @@ class GameInfo : IsPartOfGameInfoSerialization, HasGameInfoSerializationVersion
|
||||
checksum = "" // Checksum calculation cannot include old checksum, obvs
|
||||
val bytes = MessageDigest
|
||||
.getInstance("SHA-1")
|
||||
.digest(json().toJson(this).toByteArray())
|
||||
.digest(json().toJson(this).toByteArray(Charsets.UTF_8))
|
||||
checksum = oldChecksum
|
||||
return Gzip.encode(bytes)
|
||||
}
|
||||
|
@ -17,7 +17,7 @@ class LinuxX11SaverLoader : PlatformSaverLoader {
|
||||
success, file ->
|
||||
if (!success) return@createSaveDialog
|
||||
try {
|
||||
file.writeString(data, false, "UTF-8")
|
||||
file.writeString(data, false, Charsets.UTF_8.name())
|
||||
onSaved(file.path())
|
||||
} catch (ex: Exception) {
|
||||
onError(ex)
|
||||
@ -34,7 +34,7 @@ class LinuxX11SaverLoader : PlatformSaverLoader {
|
||||
FileChooser.createLoadDialog(stage, "Load game") { success, file ->
|
||||
if (!success) return@createLoadDialog
|
||||
try {
|
||||
val data = file.readString("UTF-8")
|
||||
val data = file.readString(Charsets.UTF_8.name())
|
||||
onLoaded(data, file.path())
|
||||
} catch (ex: Exception) {
|
||||
onError(ex)
|
||||
|
@ -6,7 +6,6 @@ import com.unciv.json.json
|
||||
import com.unciv.logic.map.MapParameters
|
||||
import com.unciv.logic.map.TileMap
|
||||
import com.unciv.ui.screens.savescreens.Gzip
|
||||
import com.unciv.utils.Log
|
||||
|
||||
object MapSaver {
|
||||
|
||||
@ -30,11 +29,11 @@ object MapSaver {
|
||||
}
|
||||
|
||||
fun saveMap(mapName: String, tileMap: TileMap) {
|
||||
getMap(mapName).writeString(mapToSavedString(tileMap), false)
|
||||
getMap(mapName).writeString(mapToSavedString(tileMap), false, Charsets.UTF_8.name())
|
||||
}
|
||||
|
||||
fun loadMap(mapFile: FileHandle): TileMap {
|
||||
return mapFromSavedString(mapFile.readString())
|
||||
return mapFromSavedString(mapFile.readString(Charsets.UTF_8.name()))
|
||||
}
|
||||
|
||||
fun getMaps(): Array<FileHandle> = Gdx.files.local(mapsFolder).list()
|
||||
|
@ -4,6 +4,7 @@ import com.badlogic.gdx.Files
|
||||
import com.badlogic.gdx.Gdx
|
||||
import com.badlogic.gdx.files.FileHandle
|
||||
import com.badlogic.gdx.utils.JsonReader
|
||||
import com.badlogic.gdx.utils.GdxRuntimeException // Kdoc
|
||||
import com.badlogic.gdx.utils.SerializationException
|
||||
import com.unciv.UncivGame
|
||||
import com.unciv.json.fromJsonFile
|
||||
@ -84,7 +85,7 @@ class UncivFiles(
|
||||
} else {
|
||||
files.local(path)
|
||||
}
|
||||
return file.writer(append)
|
||||
return file.writer(append, Charsets.UTF_8.name())
|
||||
}
|
||||
|
||||
fun getMultiplayerSaves(): Sequence<FileHandle> {
|
||||
@ -226,7 +227,7 @@ class UncivFiles(
|
||||
loadGameFromFile(getSave(gameName))
|
||||
|
||||
fun loadGameFromFile(gameFile: FileHandle): GameInfo {
|
||||
val gameData = gameFile.readString()
|
||||
val gameData = gameFile.readString(Charsets.UTF_8.name())
|
||||
if (gameData.isNullOrBlank()) {
|
||||
throw emptyFile(gameFile)
|
||||
}
|
||||
@ -304,7 +305,7 @@ class UncivFiles(
|
||||
}
|
||||
|
||||
fun setGeneralSettings(gameSettings: GameSettings) {
|
||||
getGeneralSettingsFile().writeString(json().toJson(gameSettings), false)
|
||||
getGeneralSettingsFile().writeString(json().toJson(gameSettings), false, Charsets.UTF_8.name())
|
||||
}
|
||||
|
||||
companion object {
|
||||
|
@ -38,8 +38,7 @@ object DropBox: FileStorage {
|
||||
|
||||
try {
|
||||
if (data != "") {
|
||||
// StandardCharsets.UTF_8 requires API 19
|
||||
val postData: ByteArray = data.toByteArray(Charset.forName("UTF-8"))
|
||||
val postData: ByteArray = data.toByteArray(Charsets.UTF_8)
|
||||
val outputStream = DataOutputStream(outputStream)
|
||||
outputStream.write(postData)
|
||||
outputStream.flush()
|
||||
@ -48,7 +47,7 @@ object DropBox: FileStorage {
|
||||
return inputStream
|
||||
} catch (ex: Exception) {
|
||||
debug("Dropbox exception", ex)
|
||||
val reader = BufferedReader(InputStreamReader(errorStream))
|
||||
val reader = BufferedReader(InputStreamReader(errorStream, Charsets.UTF_8))
|
||||
val responseString = reader.readText()
|
||||
debug("Response: %s", responseString)
|
||||
|
||||
@ -63,7 +62,7 @@ object DropBox: FileStorage {
|
||||
return null
|
||||
} catch (error: Error) {
|
||||
Log.error("Dropbox error", error)
|
||||
debug("Error stream: %s", { BufferedReader(InputStreamReader(errorStream)).readText() })
|
||||
debug("Error stream: %s", { BufferedReader(InputStreamReader(errorStream, Charsets.UTF_8)).readText() })
|
||||
return null
|
||||
}
|
||||
}
|
||||
@ -86,7 +85,7 @@ object DropBox: FileStorage {
|
||||
data="{\"path\":\"${getLocalGameLocation(fileName)}\"}",
|
||||
contentType="application/json"
|
||||
)!!
|
||||
val reader = BufferedReader(InputStreamReader(stream))
|
||||
val reader = BufferedReader(InputStreamReader(stream, Charsets.UTF_8))
|
||||
return json().fromJson(MetaData::class.java, reader.readText())
|
||||
}
|
||||
|
||||
@ -101,7 +100,7 @@ object DropBox: FileStorage {
|
||||
|
||||
override fun loadFileData(fileName: String): String {
|
||||
val inputStream = downloadFile(getLocalGameLocation(fileName))
|
||||
return BufferedReader(InputStreamReader(inputStream)).readText()
|
||||
return BufferedReader(InputStreamReader(inputStream, Charsets.UTF_8)).readText()
|
||||
}
|
||||
|
||||
override fun authenticate(userId: String, password: String): Boolean {
|
||||
@ -148,7 +147,7 @@ object DropBox: FileStorage {
|
||||
// val result = dropboxApi("https://api.dropboxapi.com/2/file_properties/templates/add_for_user",
|
||||
// "{\"name\": \"Security\",\"description\": \"These properties describe how confidential this file or folder is.\",\"fields\": [{\"name\": \"Security Policy\",\"description\": \"This is the security policy of the file or folder described.\nPolicies can be Confidential, Public or Internal.\",\"type\": \"string\"}]}"
|
||||
// ,"application/json")
|
||||
// return BufferedReader(InputStreamReader(result)).readText()
|
||||
// return BufferedReader(InputStreamReader(result, Charsets.UTF_8)).readText()
|
||||
// }
|
||||
|
||||
// private class FolderList{
|
||||
|
@ -51,19 +51,18 @@ object SimpleHttp {
|
||||
try {
|
||||
if (content.isNotEmpty()) {
|
||||
doOutput = true
|
||||
// StandardCharsets.UTF_8 requires API 19
|
||||
val postData: ByteArray = content.toByteArray(Charset.forName("UTF-8"))
|
||||
val postData: ByteArray = content.toByteArray(Charsets.UTF_8)
|
||||
val outputStream = DataOutputStream(outputStream)
|
||||
outputStream.write(postData)
|
||||
outputStream.flush()
|
||||
}
|
||||
|
||||
val text = BufferedReader(InputStreamReader(inputStream)).readText()
|
||||
val text = BufferedReader(InputStreamReader(inputStream, Charsets.UTF_8)).readText()
|
||||
action(true, text, responseCode)
|
||||
} catch (t: Throwable) {
|
||||
debug("Error during HTTP request", t)
|
||||
val errorMessageToReturn =
|
||||
if (errorStream != null) BufferedReader(InputStreamReader(errorStream)).readText()
|
||||
if (errorStream != null) BufferedReader(InputStreamReader(errorStream, Charsets.UTF_8)).readText()
|
||||
else t.message!!
|
||||
debug("Returning error message [%s]", errorMessageToReturn)
|
||||
action(false, errorMessageToReturn, responseCode)
|
||||
|
@ -59,7 +59,7 @@ class ModCategories : ArrayList<ModCategories.Category>() {
|
||||
val json = json()
|
||||
val compact = json.toJson(this, ModCategories::class.java, Category::class.java)
|
||||
val verbose = json.prettyPrint(compact)
|
||||
Gdx.files.local(fileLocation).writeString(verbose, false, "UTF-8")
|
||||
Gdx.files.local(fileLocation).writeString(verbose, false, Charsets.UTF_8.name())
|
||||
}
|
||||
|
||||
fun fromSelectBox(selectBox: TranslatedSelectBox): Category {
|
||||
|
@ -2,13 +2,12 @@ package com.unciv.models.translations
|
||||
|
||||
import com.badlogic.gdx.Gdx
|
||||
import com.badlogic.gdx.files.FileHandle
|
||||
import java.nio.charset.Charset
|
||||
import kotlin.collections.set
|
||||
|
||||
object TranslationFileReader {
|
||||
|
||||
const val percentagesFileLocation = "jsons/translations/completionPercentages.properties"
|
||||
val charset: String = Charset.forName("UTF-8").name()
|
||||
val charset: String = Charsets.UTF_8.name()
|
||||
|
||||
fun read(file: FileHandle): LinkedHashMap<String, String> {
|
||||
val translations = LinkedHashMap<String, String>()
|
||||
|
@ -57,7 +57,7 @@ object Github {
|
||||
} catch (ex: Exception) {
|
||||
// No error handling, just log the message.
|
||||
// NOTE that this 'read error stream' CAN ALSO fail, but will be caught by the big try/catch
|
||||
val reader = BufferedReader(InputStreamReader(errorStream))
|
||||
val reader = BufferedReader(InputStreamReader(errorStream, Charsets.UTF_8))
|
||||
Log.error("Message from GitHub: %s", reader.readText())
|
||||
throw ex
|
||||
}
|
||||
|
@ -26,7 +26,7 @@ object Gzip {
|
||||
private fun decompress(compressed: ByteArray): String {
|
||||
val bis = ByteArrayInputStream(compressed)
|
||||
val gis = GZIPInputStream(bis)
|
||||
val br = BufferedReader(InputStreamReader(gis, "UTF-8"))
|
||||
val br = BufferedReader(InputStreamReader(gis, Charsets.UTF_8))
|
||||
val sb = StringBuilder()
|
||||
var line: String? = br.readLine()
|
||||
while (line != null) {
|
||||
|
@ -65,7 +65,7 @@ internal object DesktopLauncher {
|
||||
width = maximumWindowBounds.width,
|
||||
height = maximumWindowBounds.height
|
||||
)
|
||||
FileHandle(SETTINGS_FILE_NAME).writeString(json().toJson(settings), false) // so when we later open the game we get fullscreen
|
||||
FileHandle(SETTINGS_FILE_NAME).writeString(json().toJson(settings), false, Charsets.UTF_8.name()) // so when we later open the game we get fullscreen
|
||||
}
|
||||
// Kludge! This is a workaround - the matching call in DesktopDisplay doesn't "take" quite permanently,
|
||||
// the window might revert to the "config" values when the user moves the window - worse if they
|
||||
|
@ -121,7 +121,7 @@ internal object ImagePacker {
|
||||
// An image folder can optionally have a TexturePacker settings file
|
||||
val settingsFile = File("$input${File.separator}TexturePacker.settings")
|
||||
val settings = if (settingsFile.exists())
|
||||
Json().fromJson(TexturePacker.Settings::class.java, settingsFile.reader())
|
||||
Json().fromJson(TexturePacker.Settings::class.java, settingsFile.reader(Charsets.UTF_8))
|
||||
else defaultSettings
|
||||
|
||||
TexturePacker.process(settings, input, output, packFileName)
|
||||
|
@ -39,6 +39,9 @@ object SystemUtils {
|
||||
builder.appendLine("Max Memory: $maxMemory MB")
|
||||
}
|
||||
|
||||
// Encoding used by Java when not explicitly specified/-able (such as atlas loader)
|
||||
builder.appendLine("System default encoding: " + Charset.defaultCharset().name())
|
||||
|
||||
return builder.toString()
|
||||
}
|
||||
|
||||
|
Reference in New Issue
Block a user