When officers arrived, they found a 59-year-old victim with stab and slice wounds on her neck, hands, and legs, they said.
Her identity was not released.
Officers took Williams, of Snellville, Ga., into custody.
He was booked into the Gwinnett County Jail without bail.
It was unclear what may have sparked the attack. Police said additional charges could be added as investigators determine a possible motive.