From 6012b2c6ea7e707523fa7d87308176772dfa0e2e Mon Sep 17 00:00:00 2001 From: Ottermandias Date: Thu, 3 Jun 2021 15:26:30 +0200 Subject: [PATCH] Remove all non-ascii symbols from path during import, because FFXIV can not handle them correctly. --- Penumbra/Importer/TexToolsImport.cs | 2 +- Penumbra/Util/StringPathExtensions.cs | 20 ++++++++++++++++++++ 2 files changed, 21 insertions(+), 1 deletion(-) diff --git a/Penumbra/Importer/TexToolsImport.cs b/Penumbra/Importer/TexToolsImport.cs index 26f071dd..9a00c578 100644 --- a/Penumbra/Importer/TexToolsImport.cs +++ b/Penumbra/Importer/TexToolsImport.cs @@ -190,7 +190,7 @@ namespace Penumbra.Importer private DirectoryInfo CreateModFolder( string modListName ) { var correctedPath = Path.Combine( _outDirectory.FullName, - Path.GetFileName( modListName ).RemoveInvalidPathSymbols() ); + Path.GetFileName( modListName ).RemoveInvalidPathSymbols().RemoveNonAsciiSymbols() ); var newModFolder = new DirectoryInfo( correctedPath ); var i = 2; while( newModFolder.Exists && i < 12 ) diff --git a/Penumbra/Util/StringPathExtensions.cs b/Penumbra/Util/StringPathExtensions.cs index 2c4f75b0..b97e9061 100644 --- a/Penumbra/Util/StringPathExtensions.cs +++ b/Penumbra/Util/StringPathExtensions.cs @@ -1,4 +1,6 @@ using System.IO; +using System.Linq; +using System.Text; namespace Penumbra { @@ -11,5 +13,23 @@ namespace Penumbra public static string RemoveInvalidPathSymbols( this string s ) => string.Concat( s.Split( _invalid ) ); + + public static string RemoveNonAsciiSymbols( this string s, string replacement = "_" ) + { + StringBuilder sb = new( s.Length ); + foreach( var c in s ) + { + if( c < 128 ) + { + sb.Append( c ); + } + else + { + sb.Append( replacement ); + } + } + + return sb.ToString(); + } } } \ No newline at end of file