UTF-8 y Chars
Gestión de Unicode
UTF-8 y Chars es una lección gratuita de Learn Rust Coding en CoddyKit. Esta es la lección 4 de 4. Puedes leer la lección completa abajo gratuitamente — luego la practicas en el navegador con un editor de código integrado y un tutor de IA 24/7. Forma parte de la ruta de aprendizaje de Learn Rust Coding, y tu progreso se sincroniza en la web y la app de CoddyKit. El curso de Learn Rust Coding incluye 4 lecciones en total.
Las cadenas de Rust son UTF-8
Cada String y &str de Rust está codificado como UTF-8. Esto significa que el texto puede incluir cualquier carácter Unicode, no solo ASCII.
fn main() {
let s = String::from("caf\u{e9}");
println!("{}", s);
}¿Qué es UTF-8?
UTF-8 codifica cada carácter Unicode usando de uno a cuatro bytes. Los caracteres ASCII usan un solo byte; las letras acentuadas y los emojis usan más.
fn main() {
let ascii = "A"; // 1 byte
let accent = "\u{e9}"; // 2 bytes (e-acute)
println!("{} bytes vs {} bytes", ascii.len(), accent.len());
}Bytes frente a caracteres
Debido a la codificación multibyte, len() devuelve el número de bytes, mientras que el número de caracteres puede ser menor.
fn main() {
let s = "caf\u{e9}";
println!("bytes {}", s.len());
println!("chars {}", s.chars().count());
}El tipo char es Unicode
Un char de Rust es un valor de 4 bytes que puede contener cualquier valor escalar Unicode, mucho más que un solo byte.
fn main() {
let letter = 'Z';
let accented = '\u{f1}'; // n with tilde
println!("{} {}", letter, accented);
}Iteración sobre caracteres
Use chars() para recorrer el texto carácter por carácter. Esto gestiona correctamente los caracteres multibyte.
fn main() {
let s = "a\u{e9}z";
for c in s.chars() {
println!("{}", c);
}
}Por qué no puede indexar por número
Rust no permite usar s[0] en una cadena. Como los caracteres pueden tener distintos tamaños en bytes, indexar con un solo número sería ambiguo e inseguro.
fn main() {
let s = "hello";
// let c = s[0]; // error: cannot index a str
let first = s.chars().next().unwrap();
println!("{}", first);
}Obtención del carácter en la posición nth
Use el método de iterador nth para obtener un carácter por posición. Devuelve un Option.
fn main() {
let s = "abcdef";
let third = s.chars().nth(2);
println!("{:?}", third);
}Iteración sobre bytes
Cuando realmente necesite los bytes sin procesar, use bytes(), que produce valores u8.
fn main() {
let s = "AB";
for b in s.bytes() {
println!("{}", b);
}
}Slicing en límites de bytes
Los slices de cadenas usan índices de bytes. El slicing debe terminar en un límite de carácter válido o el programa entra en pánico.
fn main() {
let s = "hello";
let part = &s[0..3]; // valid ASCII boundary
println!("{}", part);
}Métodos de char
El tipo char tiene métodos prácticos como is_alphabetic, is_numeric y to_uppercase.
fn main() {
let c = 'k';
println!("alpha {} numeric {}", c.is_alphabetic(), c.is_numeric());
println!("upper {}", c.to_uppercase());
}Conteo de caracteres específicos
Combine chars con filter para contar los caracteres que cumplen una condición.
fn main() {
let s = "banana";
let a_count = s.chars().filter(|&c| c == 'a').count();
println!("a appears {} times", a_count);
}Comprobación rápida
Recuerde por qué la longitud de una cadena puede resultar sorprendente.
Resumen
UTF-8 y chars en Rust:
- Las cadenas son UTF-8; los caracteres usan de 1 a 4 bytes.
len()devuelve bytes;chars().count()devuelve caracteres.- No puede indexar una cadena por número; use
chars()onth. - Los slices deben quedar en límites de carácter.
fn main() {
let s = "sm\u{ee}le";
println!("bytes {} chars {}", s.len(), s.chars().count());
for c in s.chars() {
print!("{} ", c);
}
println!();
}Aprende Rust con un tutor de IA — gratis
Escribe y ejecuta código real en tu navegador, obtén ayuda instantánea de un tutor de IA disponible 24/7 y continúa donde lo dejaste en la web o en la aplicación.
- Cursos
- 39
- Lecciones
- 144
Preguntas frecuentes
¿La lección «UTF-8 y Chars» es gratis?
Sí — el texto completo de «UTF-8 y Chars» es gratis para leer aquí en la web. Para practicarla de forma interactiva (editor de código integrado y tutor de IA 24/7) y desbloquear el resto del curso de Learn Rust Coding, actualiza a CoddyKit PRO. El curso de Learn Rust Coding incluye 4 lecciones en total.
¿Qué aprenderé en «UTF-8 y Chars»?
Gestión de Unicode Practicas Learn Rust Coding con código real que ejecutas directamente en el navegador, y un tutor de IA 24/7 responde tus preguntas mientras trabajas en la lección.
¿Necesito experiencia previa para empezar Learn Rust Coding?
No se requiere experiencia previa. Learn Rust Coding en CoddyKit está estructurado para principiantes hasta estudiantes avanzados, así que puedes empezar aquí o desde el inicio y avanzar a tu ritmo. Esta es la lección 4 de 4.
¿Cuánto tiempo toma la lección «UTF-8 y Chars»?
La mayoría de las lecciones de CoddyKit toman alrededor de 5–10 minutos. Cada una es compacta e interactiva, así que avanzas constantemente y retomas exactamente por donde dejaste en la web y la app.
¿Puedo escribir y ejecutar código en esta lección de Learn Rust Coding?
Sí. Cada lección de Learn Rust Coding incluye un editor de código integrado, así que escribes y ejecutas código real directamente en tu navegador y obtienes retroalimentación instantánea de IA — sin configuración local necesaria.
Todas las lecciones de este curso
- String frente a &str
- Slices
- Métodos de String
- UTF-8 y Chars