mirror of
https://github.com/SubtitleEdit/subtitleedit.git
synced 2024-10-27 22:42:38 +01:00
Improve encoding for header in EBU STL - thx Ingo S :)
This commit is contained in:
parent
ef1a56c066
commit
68c8f4454a
@ -264,7 +264,7 @@ namespace Nikse.SubtitleEdit.Core.SubtitleFormats
|
||||
buffer[14] = JustificationCode;
|
||||
buffer[15] = CommentFlag;
|
||||
|
||||
var encoding = Encoding.GetEncoding(1252);
|
||||
var encoding = GetEncoding(header.CodePageNumber);
|
||||
if (header.LanguageCode == LanguageCodeChinese)
|
||||
{
|
||||
var lines = HtmlUtil.RemoveHtmlTags(TextField, true).SplitToLines();
|
||||
@ -748,7 +748,7 @@ namespace Nikse.SubtitleEdit.Core.SubtitleFormats
|
||||
|
||||
if (subtitle.Header != null && subtitle.Header.Length == 1024 && (subtitle.Header.Contains("STL24") || subtitle.Header.Contains("STL25") || subtitle.Header.Contains("STL29") || subtitle.Header.Contains("STL30")))
|
||||
{
|
||||
header = ReadHeader(Encoding.UTF8.GetBytes(subtitle.Header));
|
||||
header = ReadHeader(GetEncoding(subtitle.Header.Substring(0, 3)).GetBytes(subtitle.Header));
|
||||
EbuUiHelper.Initialize(header, EbuUiHelper.JustificationCode, null, subtitle);
|
||||
}
|
||||
else
|
||||
@ -782,7 +782,7 @@ namespace Nikse.SubtitleEdit.Core.SubtitleFormats
|
||||
}
|
||||
}
|
||||
|
||||
byte[] buffer = Encoding.GetEncoding(1252).GetBytes(header.ToString());
|
||||
var buffer = GetEncoding(header.CodePageNumber).GetBytes(header.ToString());
|
||||
stream.Write(buffer, 0, buffer.Length);
|
||||
|
||||
int subtitleNumber = 0;
|
||||
@ -1031,7 +1031,7 @@ namespace Nikse.SubtitleEdit.Core.SubtitleFormats
|
||||
|
||||
public static EbuGeneralSubtitleInformation ReadHeader(byte[] buffer)
|
||||
{
|
||||
var enc = Encoding.GetEncoding(1252);
|
||||
var enc = GetEncoding(Encoding.ASCII.GetString(buffer, 0, 3));
|
||||
var header = new EbuGeneralSubtitleInformation
|
||||
{
|
||||
CodePageNumber = enc.GetString(buffer, 0, 3),
|
||||
@ -1063,6 +1063,18 @@ namespace Nikse.SubtitleEdit.Core.SubtitleFormats
|
||||
return header;
|
||||
}
|
||||
|
||||
private static Encoding GetEncoding(string codePageNumber)
|
||||
{
|
||||
try
|
||||
{
|
||||
return Encoding.GetEncoding(int.TryParse(codePageNumber, out int cp) ? cp : 437);
|
||||
}
|
||||
catch (NotSupportedException)
|
||||
{
|
||||
return Encoding.GetEncoding(437);
|
||||
}
|
||||
}
|
||||
|
||||
/// <summary>
|
||||
/// Get text with regard code page from header
|
||||
/// </summary>
|
||||
|
Loading…
Reference in New Issue
Block a user