pub struct DetectEncodingArgs {
pub verbose: bool,
pub file_paths: Vec<String>,
}Expand description
Command-line arguments for file encoding detection.
The detect-encoding command analyzes the byte patterns and character distributions in text files to determine their most likely character encoding. This is essential for processing subtitle files that may have been created with different encodings.
§Detection Algorithm
The detection process uses multiple approaches:
- BOM (Byte Order Mark) detection for Unicode files
- Statistical analysis of byte patterns
- Character frequency analysis for specific languages
- Heuristic rules based on encoding characteristics
§Examples
use subx_cli::cli::DetectEncodingArgs;
let args = DetectEncodingArgs {
verbose: true,
file_paths: vec![
"subtitle1.srt".to_string(),
"subtitle2.ass".to_string(),
],
};Fields§
§verbose: boolDisplay detailed sample text and confidence information.
When enabled, shows additional information about the detection process:
- Confidence percentage for the detected encoding
- Sample text decoded with the detected encoding
- Alternative encoding candidates with their confidence scores
- Detected language hints (if available)
This is useful for verifying detection accuracy and troubleshooting encoding issues with problematic files.
§Examples
# Basic detection
subx detect-encoding file.srt
# Output: file.srt: UTF-8
# Verbose detection with details
subx detect-encoding --verbose file.srt
# Output:
# file.srt: UTF-8 (99.5% confidence)
# Sample: "1\n00:00:01,000 --> 00:00:03,000\nHello World"
# Alternatives: ISO-8859-1 (15.2%), Windows-1252 (12.8%)file_paths: Vec<String>File paths to analyze for encoding detection.
Accepts multiple file paths or glob patterns. All specified files will be analyzed and their detected encodings reported. The command supports both absolute and relative paths.
§Supported File Types
While primarily designed for subtitle files, the detection works with any text-based file:
- Subtitle files: .srt, .ass, .vtt, .sub, .ssa, .smi
- Text files: .txt, .md, .csv, .json, .xml
- Script files: .py, .js, .html, .css
§Examples
# Single file
subx detect-encoding subtitle.srt
# Multiple specific files
subx detect-encoding file1.srt file2.ass file3.vtt
# Glob patterns (shell expansion)
subx detect-encoding *.srt
subx detect-encoding subtitles/*.{srt,ass}
# Mixed paths
subx detect-encoding /absolute/path/file.srt ./relative/file.ass§Error Handling
If a file cannot be read or analyzed:
- The error is reported for that specific file
- Processing continues with remaining files
- Non-text files are skipped with a warning
- Permission errors are clearly indicated
Trait Implementations§
Source§impl Args for DetectEncodingArgs
impl Args for DetectEncodingArgs
Source§fn augment_args<'b>(__clap_app: Command) -> Command
fn augment_args<'b>(__clap_app: Command) -> Command
Source§fn augment_args_for_update<'b>(__clap_app: Command) -> Command
fn augment_args_for_update<'b>(__clap_app: Command) -> Command
Command so it can instantiate self via
FromArgMatches::update_from_arg_matches_mut Read moreSource§impl Debug for DetectEncodingArgs
impl Debug for DetectEncodingArgs
Source§impl FromArgMatches for DetectEncodingArgs
impl FromArgMatches for DetectEncodingArgs
Source§fn from_arg_matches(__clap_arg_matches: &ArgMatches) -> Result<Self, Error>
fn from_arg_matches(__clap_arg_matches: &ArgMatches) -> Result<Self, Error>
Source§fn from_arg_matches_mut(
__clap_arg_matches: &mut ArgMatches,
) -> Result<Self, Error>
fn from_arg_matches_mut( __clap_arg_matches: &mut ArgMatches, ) -> Result<Self, Error>
Source§fn update_from_arg_matches(
&mut self,
__clap_arg_matches: &ArgMatches,
) -> Result<(), Error>
fn update_from_arg_matches( &mut self, __clap_arg_matches: &ArgMatches, ) -> Result<(), Error>
ArgMatches to self.Source§fn update_from_arg_matches_mut(
&mut self,
__clap_arg_matches: &mut ArgMatches,
) -> Result<(), Error>
fn update_from_arg_matches_mut( &mut self, __clap_arg_matches: &mut ArgMatches, ) -> Result<(), Error>
ArgMatches to self.Auto Trait Implementations§
impl Freeze for DetectEncodingArgs
impl RefUnwindSafe for DetectEncodingArgs
impl Send for DetectEncodingArgs
impl Sync for DetectEncodingArgs
impl Unpin for DetectEncodingArgs
impl UnwindSafe for DetectEncodingArgs
Blanket Implementations§
Source§impl<T> BorrowMut<T> for Twhere
T: ?Sized,
impl<T> BorrowMut<T> for Twhere
T: ?Sized,
Source§fn borrow_mut(&mut self) -> &mut T
fn borrow_mut(&mut self) -> &mut T
Source§impl<T> Instrument for T
impl<T> Instrument for T
Source§fn instrument(self, span: Span) -> Instrumented<Self>
fn instrument(self, span: Span) -> Instrumented<Self>
Source§fn in_current_span(self) -> Instrumented<Self>
fn in_current_span(self) -> Instrumented<Self>
Source§impl<T> IntoEither for T
impl<T> IntoEither for T
Source§fn into_either(self, into_left: bool) -> Either<Self, Self>
fn into_either(self, into_left: bool) -> Either<Self, Self>
self into a Left variant of Either<Self, Self>
if into_left is true.
Converts self into a Right variant of Either<Self, Self>
otherwise. Read moreSource§fn into_either_with<F>(self, into_left: F) -> Either<Self, Self>
fn into_either_with<F>(self, into_left: F) -> Either<Self, Self>
self into a Left variant of Either<Self, Self>
if into_left(&self) returns true.
Converts self into a Right variant of Either<Self, Self>
otherwise. Read moreSource§impl<F, T> IntoSample<T> for Fwhere
T: FromSample<F>,
impl<F, T> IntoSample<T> for Fwhere
T: FromSample<F>,
fn into_sample(self) -> T
Source§impl<T> PolicyExt for Twhere
T: ?Sized,
impl<T> PolicyExt for Twhere
T: ?Sized,
Source§impl<SS, SP> SupersetOf<SS> for SPwhere
SS: SubsetOf<SP>,
impl<SS, SP> SupersetOf<SS> for SPwhere
SS: SubsetOf<SP>,
Source§fn to_subset(&self) -> Option<SS>
fn to_subset(&self) -> Option<SS>
self from the equivalent element of its
superset. Read moreSource§fn is_in_subset(&self) -> bool
fn is_in_subset(&self) -> bool
self is actually part of its subset T (and can be converted to it).Source§fn to_subset_unchecked(&self) -> SS
fn to_subset_unchecked(&self) -> SS
self.to_subset but without any property checks. Always succeeds.Source§fn from_subset(element: &SS) -> SP
fn from_subset(element: &SS) -> SP
self to the equivalent element of its superset.