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[14] = JustificationCode;
|
||||||
buffer[15] = CommentFlag;
|
buffer[15] = CommentFlag;
|
||||||
|
|
||||||
var encoding = Encoding.GetEncoding(1252);
|
var encoding = GetEncoding(header.CodePageNumber);
|
||||||
if (header.LanguageCode == LanguageCodeChinese)
|
if (header.LanguageCode == LanguageCodeChinese)
|
||||||
{
|
{
|
||||||
var lines = HtmlUtil.RemoveHtmlTags(TextField, true).SplitToLines();
|
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")))
|
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);
|
EbuUiHelper.Initialize(header, EbuUiHelper.JustificationCode, null, subtitle);
|
||||||
}
|
}
|
||||||
else
|
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);
|
stream.Write(buffer, 0, buffer.Length);
|
||||||
|
|
||||||
int subtitleNumber = 0;
|
int subtitleNumber = 0;
|
||||||
@ -1031,7 +1031,7 @@ namespace Nikse.SubtitleEdit.Core.SubtitleFormats
|
|||||||
|
|
||||||
public static EbuGeneralSubtitleInformation ReadHeader(byte[] buffer)
|
public static EbuGeneralSubtitleInformation ReadHeader(byte[] buffer)
|
||||||
{
|
{
|
||||||
var enc = Encoding.GetEncoding(1252);
|
var enc = GetEncoding(Encoding.ASCII.GetString(buffer, 0, 3));
|
||||||
var header = new EbuGeneralSubtitleInformation
|
var header = new EbuGeneralSubtitleInformation
|
||||||
{
|
{
|
||||||
CodePageNumber = enc.GetString(buffer, 0, 3),
|
CodePageNumber = enc.GetString(buffer, 0, 3),
|
||||||
@ -1063,6 +1063,18 @@ namespace Nikse.SubtitleEdit.Core.SubtitleFormats
|
|||||||
return header;
|
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>
|
/// <summary>
|
||||||
/// Get text with regard code page from header
|
/// Get text with regard code page from header
|
||||||
/// </summary>
|
/// </summary>
|
||||||
|
Loading…
Reference in New Issue
Block a user